其他修饰符
public | 可以修饰属性、方法、构造方法、类 |
protected | 可以修饰属性、方法、构造方法 |
default | 可以修饰属性、方法、构造方法、类 |
private | 可以修饰属性、方法、构造方法(如果修饰构造方法全为私有,则该类不支持被继承) |
abstract | 可以修饰方法、类 |
final | 可以修饰属性、方法、类 |
abstract
- abstract修饰类时,这个类只能声明引用、不能创建对象,可供子类继承(多态)
- abstract修饰方法,抽象方法没有实现({}),只有声明(abstract void method();),供子类去覆盖实现
总结:
- 如果一个类具有抽象方法,那么这个类就必须是抽象类,但抽象类不一定有抽象方法
- 如果一个类继承抽象类,但若这个类不希望成为抽象类,这个类就必须实现父亲类中所有的抽象方法
- 抽象类也拥有构造方法,供子类用super()调用
抽象方法可以使方法的声明和实现部分分离,声明提取到父类,实现留在子类,则更好的体现子类的共性放在父类的设计思想
final修饰符
1.final修饰方法:用final修饰的方法不能被子类覆盖,但可以被继承
2.final修饰类:用final修饰的类不能被继承
3.final修饰变量:
修饰局部变量:一旦赋值就不能更改(常量)
修饰成员变量:用final修饰的类的成员变量,没有默认值,可以通过初始化赋值一次。如果只声明而没有初始化赋值,就必须在所有构造方法里赋值或用static修饰的代码块接口interface
接口:接口是一个特殊的抽象类
注意:
- 接口中所有的方法都是公开抽象方法(public abstract 方法名,可以省略不写)
(在jdk8后接口中可以有default、static方法. jdk9后几口中可以有private方法) 变态不? - 接口中的属性都是公开静态常量(public static final 常量名 ,可以省略不写)
- 接口中没有构造方法,而抽象类中有构造方法
一个类实现一个接口,如果这个类不希望成为一个抽象类,则就必须实现接口中的所有方法
接口的特性:
- 接口之间可以定义多继承关系(接口之间的继承仍然是用extends,用“,”分隔)
一个类在继承另外一个类的同时,还能实现多个接口此时多个接口之间用“,”隔开
接口的作用:
- 实现多继承(注意不全是多继承,例如一个类不可能有两个方法名相同、参数表相同、放回值类型相同的两个方法,所有就要求继承多个父类时,父类如果有相同方法时,就会出错)
- 接口是一个标准(提高编程的弱耦合性)
定义接口就是定义一个标准,就把标准的实现者和标准的使用者分离,从而形成弱耦合关系