一、final关键字
final 可以修饰在类、成员变量、方法。
1、如果修饰类:则该类不会被继承(一般在开发中很少使用 );2、如果修饰成员变量:一旦给成员变量赋值后就不允许修改其值,一般用在对常量的定义中。
3、如果修饰方法:该方法不能被重写。
在实际的开发中, final 用的最多的场景是结合 static 关键字定义类变量,即静态变量。
定义为 final 另一个意图就是将变量的值保护起来
二、static关键字
用于修饰成员变量和方法,用 static 修饰的成员变量后者方法是属于 类 的,而不属于该类的实例(对象)。通常把 static 修饰的成员变量称为「类变量、静态变量」,方法称为「类方法、静态方法」
三、访问修饰符
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
作用范围:
访问修饰符\作用范围 | 所在类 | 同一包内其他类 | 其他包内子类 | 其他包内非子类 |
---|---|---|---|---|
private | 可以访问 | 不可以 | 不可以 | 不可以 |
缺省 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
四、隐匿内部类
定义 : 指通过继承一个父类或者实现一个接口的方式直接定义并使用的类。
隐匿内部类格式 :
接口名称 对象名=new 接口名称(){
覆盖重写所有抽象方法
};
隐匿内部类使用的前提:
如果接口的实现类,或者父类的子类只需要使用唯一的一次,那么就可以省略该类的定义,改用匿名内部类