接口修饰符
访问修饰符 interface 接口名称 extends 接口列表
接口不能够定义其声明的方法的任何实现。
接口中的变量总是需要定义为“public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样,显示的包含修饰符主要
public | 所有包可见 | |
无访问修饰符(默认) |
同一个包内可见 |
类修饰符
访问修饰符 非访问修饰符 class 类名称 extends 父类名称 implement 接口名称
(访问修饰符与非访问修饰符的位置可以互换)
访问控制符 | ||
公共类修饰符 public |
每个 Java 程序的主类都必须是 public 类,public 类必须定义在和类名相同的同名文件中; 将一个类声明为公共类,他可以被任何对象访问; | |
缺省默认 |
默认的访问权限,可以省略此关键字,可以定义在和 public 类的同一个文件中; 如果一个类没有访问控制符,说明它具有缺省的访问控制符特性,只能被同一个包中的类访问或引用; | |
非访问控制符 | ||
抽象类修饰符 abstract |
抽象类是指这种类没有具体对象的一种概念类; 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。如果要使用 abstract 类,必须先建一个继承 abstract 类的新类,然后在新类中实现 abstract 类中的抽象方法; 一个类只要有一个 abstract 方法,就必须定义为abstract; abstract 类可以包含其他方法,也可以不包含 abstract 方法; | |
最终类修饰符 final |
final 将一个类声明为最终类(即非继承类),表示不能被其他类继承; 0被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类; |
方法修饰符
访问修饰符 修饰符 返回类型 方法名称(参数列表)throws 违例列表
类的构造器方法不能够有修饰符、返回类型和throws子句,且方法名必须和类名相同。
访问控制符 | ||
公共访问控制符 public |
可以被所有类访问(使用) | |
私有访问控制符 private |
可以被同一个包中的类访问(使用) | |
保护访问控制符 protected | 可以被该类自身、与它在同一个包中的其它类和该类的子类访问(使用) | |
私有保护访问控制符 private protected | 可以被该类本身和该类的子类访问(使用) | |
非访问控制符 | ||
抽象方法修饰符 abstract |
用 abstract 修饰的方法称为抽象方法; 抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法; 不能将static方法、final方法或者类的构造器方法声明为 abstract; | |
最终方法修饰符 final |
用 final 修饰的方法称为最终方法; 最终方法是功能和内部语句不能更改的方法,即最终方法不能重载。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性; 所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类 ) 中的方法,都被认为是最终方法; 可以同 static 一起使用,避免对类的每个实例维护一个拷贝; | |
静态方法修饰符 static |
用 static 修饰的方法称为静态方法(又称为类方法); 静态方法是属于整个类的类方法,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static 的域; 静态方法提供不依赖于类实例的服务,不需要创建类的实例就可以访问静态方法 | |
本地方法修饰符 native |
用修饰符 native 修饰的方法称为本地方法; 为了提高程序的运行速度,需要用其它的高级语言(大多数情况下是用C、C++)书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰; Sun的Java Native接口(JNI)提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能; | |
同步方法修饰符 synchronized |
synchronized 修饰符主要用于多线程共存的程序中的协调和同步; 当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回; |
属性修饰符
访问修饰符 修饰符 变量名称
Java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。
方法中的变量不能够有访问修饰符。
可以通过实例变量初始化器来初始化较复杂的实例变量,实例变量初始化器是一个用{}包含的语句块,在类的构造器被调用时运行,运行于父类构造器之后,构造器之前。
类变量(静态变量)也可以通过类变量初始化器来进行初始化,类变量初始化器是一个用static{}包含的语句块,只可能被初始化一次。
访问控制符 | ||
公共访问控制符 public |
用 public 修饰的域称为公共域; 如果公共域属于一个公共类,则可以被所有其它类所引用; 由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用; | |
私有访问控制符 private |
用 private 修饰的成员变量只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用; | |
保护访问控制符 protected |
用 protected 修饰的成员变量可以被:该类自身、与它在同一个包中的其它类和该类的子类访问和引用; 使用修饰符 protected 的主要作用是允许其它包中它的子类来访问父类的特定属性; | |
私有保护访问控制符 private protected | 用 private protected 修饰的成员变量可以被:该类本身和该类的子类访问和引用。 | |
非访问控制符 | ||
最终域修饰符 final |
f一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的; 注意不要使用 const 来定义常量,虽然它和C、C++中的const关键字含义一样 可以同 static 一起使用,避免对类的每个实例维护一个拷贝 | |
静态域修饰符 static |
用 static 修饰的成员变量称为静态变量(又称为类变量) 静态变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间; 静态变量可以被类的所有实例共享,任何一个类的对象访问它时取到的都是相同的数据,任何一个类的对象修改它时 , 也都是对同一个内存单元进行操作; 并不需要创建类的实例就可以访问静态变量 | |
易失 ( 共享 ) 域修饰符 volatile |
易失 ( 共享 ) 域修饰符 volatile 是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。因此,在使用中要注意这种成员变量取值的变化; 通常 volatile 用来修饰接受外部输入的域。 | |
暂时性域修饰符 transient |
暂时性域修饰符 transient 用来定义一个暂时性变量; 其特点是:用修饰符 transient 限定的暂时性变量,将指定 Java 虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。 |
访问修饰符访问权限
public 访问权限最高,不论是不是同一个包或是否是子类,都可以访问;
protected 其次,只有是不同包且不是子类的无法访问外,其它均可访问;
默认缺省 次之,要求只能是同一个包中的类才能访问;
private 只能是同一个类才能访问;
四个访问修饰符可以修饰方法或者属性,但是类只能用 public 或者默认缺省
位置 | 同一个类可见 | 同一个包可见 | 不同包子类可见 | 不同包非子类可见 | |
public |
√ | √ | √ | √ | |
protected | √ | √ | √ | ||
默认缺省 | √ | √ | |||
private | √ |