Java的抽象类和接口
1. 抽象类
- 抽象类必须使用abstract修饰,抽象方法也必须使用abstract修饰
- 抽象类不能被实例化
- 抽象方法可以包含成员变量、方法(普通方法和抽象方法都行)、构造器、初始化块、内部类(接口、枚举)
- 含有抽象方法的类只能被定义为抽象类
- 抽象类的子类如果没有实现所有的抽象方法,那么这个子类也是抽象类
2. 接口
Java8和Java9都对接口进行了,然而网上的资料很少有更新。
- 接口的修饰符可以是public,或者省略
- 接口不能包含构造器和初始化块
- 接口可以包含成员变量(只能是静态常量)、方法(只能是抽象方法、类方法、默认方法或私有方法)、内部类(包括内部接口、枚举)
3.共性
- 都不能被实例化
- 都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法
4. 区别
- 、接口只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现;抽象类可以包含普通方法
- 接口只能定义静态常量,不能定义普通成员变量;抽象类既可以定义普通成员变量,也可以定义静态常量
- 接口不包含构造器;抽象类可以有构造器,都是并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作
- 接口不能包含初始化块;抽象类可以包含初始化块
- 一个类只能有一个直接父类;但是一个类可以实现多个接口
还没有评论,来说两句吧...