a.抽象(abstract)
1. 定义
a. 抽象类:在普通类里增加了抽象方法。
b. 抽象方法:没有具体的执行方法,没有方法体的方法。
2. 总结
a. 因为抽象方法没有方法体,无法执行,所以不能new这个抽象类,类不能被实例化,编译器会告诉我们无法编译此类,因为包含抽象方法,所有抽象方法必须在抽象类里。
b. 抽象类本身被设计成只能用于被继承,所以抽象类可强迫子类来具体实现其抽象方法。
c. 抽象类里可以有普通方法。
d. 如果子类也是抽象类,可以不用重写父类的方法。
e. static和final都不能修饰抽象方法(修饰的方法都不能被重写)。
b. 接口(interface)
1. 定义
a. 一个抽象类没有字段并且所有方法都是抽象方法。
b. 某种特征的约定,没有方法体的方法。
c. 比抽象类还要抽象的纯抽象接口。
2. 术语区分
a. Java的接口特指interface的定义,表示一个接口类型和方法定义。
b. 编程接口泛指接口规范,方法签名,数据格式,网络协议等。
3. default方法
a. 在接口中可以定义default方法,目的是:接口新增一个方法时,所有实现类都要修改,如果新增的是default方法,那只在需要的地方复写此方法。
b. default方法和抽象类种的普通方法有所不同,因为interface没有字段,defalut方法无法访问字段,而抽象类的普通方法可以访问实例字段。
4. 总结
a. 属性:有且仅有全局常量,public static final修饰(可省略),由于接口是纯抽象类,所以不能有实例字段,但是可以有静态字段。
b. 方法:都是抽象方法,public abstract(没有方法体)修饰(可省略)。
c.不能被实例化,没有构造方法,只能通过实现类来具体实现。
d. 类可以实现接口,实现接口必须重写接口中的方法。
e. 可以实现多个接口,单继承,多实现。
f. 一个类既可以继承又可以实现,先继承后实现。
g. 接口可以继承接口,扩展接口的方法:interface Student extends Person