-
抽象类和抽象方法必须用 abstract 关键字修饰
-
抽象类不一定有抽象方法,有抽象方法的一定是抽象类
-
抽象类不能实例化
-
抽象类的子类:
要么是抽象类;要么重写抽象类的所有抽象方法
- 成员变量:可以是常量,也可以是变量
- 构造方法:有构造方法,但是不能实例化(作用:用于子类访问父类数据的初始化)
- 成员方法:可以有抽象方法和非抽象方法
注意:
-
abstract 与 private、final 冲突;
(abstract 修饰的类,必须被继承;abstract 修饰的方法,应被重写。
但是 final 修饰的类、属性、方法不可被更改,所以final 修饰的方法不可以被重写。
private 修饰的类只能是内部类,private 修饰的属性、方法只能在本类中调用。)
-
abstract 与 static 放一起是没有意义的。
(static 修饰的方法是静态的,可以直接被类所调用。
但是 abstract 修饰的方法抽象方法,没有方法体不能够被直接调用。)
-
使用 interface
-
类实现接口使用 implements
-
接口不能实例化
-
接口的子类:
要么是抽象类;要么实现接口中所有抽象方法
- 成员变量:只能是常量,默认是 public static final
- 构造方法:无
- 成员方法:都是抽象方法,默认是 public abstract
-
成员区别
抽象类:常量/变量;有构造方法;有抽象方法和非抽象方法
接口:常量;无构造方法;只有抽象方法
-
关系区别
类与类:继承关系(单继承)
类与接口:实现关系(可以多实现)
接口与接口:继承关系(可以多继承)
-
设计理念区别
抽象类被继承,体现 "is a " 理念
接口被实现,体现 "like a" 理念