修饰符:
访问修饰符(在类中声明,供别的类制定):public、private、protected、default
访问权限:公开、默认的、受保护的、私有的
非访问修饰符:final、static、abstract、synchronized
访问修饰符:
是用来控制其他类对该类的类、实例变量、构造方法、实例方法的访问权限。Java的访问权限有4种:
public 公开的、适用对象:类、接口、变量、方法。
protected 受保护的、适用对象:变量、方法。
默认的(default),没有任何关键字来表示、适用对象:类、接口、变量、方法。
private 私有的、适用对象:变量、方法。
(声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。)
修饰符 | 当前类 | 同包的类 | 同包的子类 | 异包 | 异包的子类 |
public | √ | √ | √ | √ | √ |
protected | √ | √ | √ | × | √ |
默认的 | √ | √ | √ | × | × |
private | √ | × | × | × | × |
这四种访问权限从大到小的排序为:public > protected > 默认的 > private;
非访问修饰符:
1、静态修饰符static:用来修饰类方法和类变量
Ø 如果没有使用static关键字修饰,该方法为普通方法(实例方法),即对象的方法;
Ø 静态方法中,只能直接调用静态方法;
Ø 实例方法中,可以直接调用静态方法,也可以直接调用实例方法;
Ø 静态方法中如果要调用实例方法,必须先实例化对象,使用对象名调用;
Ø 当final修饰类时,当前类不能被继承;
Ø 当final修饰方法时,该方法不能被重写;
Ø 当final修饰变量时,变量的值不能被修改,即为常量;
3、
abstract:
Ø 含有抽象方法的类,一定是抽象类;
Ø 抽象类中可以声明成员变量、常量、成员方法、抽象方法,抽象类中不一定要有抽象方法;
Ø 抽象类不能被实例化;
Ø 抽象类可以被继承;
Ø 可以通过两种方式获得抽象类对象:父类引用指向子类对象(多态)、匿名内部类;
Ø 子类必须重写抽象父类的所有抽象方法,或者是把子类也定义为抽象类;
Ø 如果一个类继承的抽象父类还有上级抽象父类,那么子类中需要要重写所有抽象父类的所有抽象方法;
Ø 抽象类也可以继承非抽象类,同时继承了父类的所有非私有的属性和方法;
synchronized 关键字声明的方法同一时间只能被一个线程访问。
synchronized 修饰符可以应用于四个访问修饰符。
注意:
父类中声明为public的方法在子类中也必须为public。
父类中声明为protected的方法在子类中要么声明为protected,要么声明为public,不能声明为private。
父类中声明为private的方法不能被继承。