抽象类的特点:
1. 抽象方法一定在抽象类中。
2. 抽象方法和抽象类都必须被abstract关键字修饰。
3. 抽象类不可以用new创建对象,因为调用抽象方法没有意义。
4. 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后 ,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类仍旧是一个抽象类。
5. 抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
注意:
abstract关键字,和以下关键字不能共存:
final :被final修饰的类不能有子类,而abstract修饰的类一定是要被子类继承的。
private 抽象类中的私有的抽象方法不能被子类所知,就无法被复写。而抽象方法的出现就是要被复写。
static : 如果是static修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没有意义。
抽象类中 可以有构造函数,因为是一个父类,要给子类提供实例的初始化。
接口:
相当于是一个特殊抽象类,里面存的全部都是抽象方法。
格式:
1.通过interface来定义。
2.接口中常见成员:常量 ,抽象方法
而且这些成员都有固定的修饰符 。常量 : public ,static,final 方法: public abstract
3. 接口中的成员都是共有的。
4. 一个类可以对接口进行多实现,也弥补了多继承的安全隐患。所以java 对多继承用多实现来体现多继承的特性。
5.一个类可以继承一个类的同时,实现多个接口。
6.接口与接口之间是继承关系
应用特点:
1.接口是对外暴露的规则
2.接口是功能的扩展
3.接口的出现降低了耦合性。
抽象类和接口异同:
相同:
1,都可以在内部定义抽象方法。
2,通常都在顶层。
3,都不可以实例化,都需要子类来实现。
不同点:
1,抽象类中可以定义抽象方法和非抽象方法,
而接口中只能定义抽象方法。
2,接口的出现可以多实现。
抽象类只能单继承。
也就是说:接口的出现避免了单继承的局限性。
3,继承和实现的关系不一致。继承:is a,实现:like a