关于接口和抽象类的简单理解
2018-04-27 本文已影响0人
YangEvol
抽象类:
抽象类体现了数据抽象的思想,是实现多态的一种机制。
1.由abstract关键词修饰的类称之为抽象类。
2.抽象类中没有实现的方法称之为抽象方法,也需要加关键字abstract。
3.抽象类中也可以没有抽象方法。
4.抽象类中可以有已经实现的方法,可以定义成员变量。
5.抽象类可以多层继承。
接口:
接口提供的只是一种形式,而没有具体的实现。同时实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字实现。
1.由interface关键词修饰的称之为接口;
2.接口中可以定义成员变量,但是这些成员变量默认都是public static final的常量。
3.接口中没有已经实现的方法,全部是抽象方法。
4.一个类实现某一接口,必须实现接口中定义的所有方法。
5.一个类可以实现多个接口。
区别:
1.抽象层次不同。
抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,
接口却是对类局部(行为)进行抽象。
2.设计层次不同。
抽象类是自下而上来设计的,要先知道子类才能抽象出父类,是自底向上抽象而来的。
接口不需要知道子类的存在,只需要定义一个规则即可,是自顶向下设计出来的。
3.实现不同。
比如 鸟和飞机都有飞的行为
用抽象类实现:
父类:
飞机:
鸟:
用接口实现:
接口:
飞机:
鸟:
鸟类有吃东西的方法。但用抽象类继承,飞机也要实现吃东西的方法,显然是不合理的,
所以从这里可以看出来,抽象类是抽象的共有的属性或方法。而接口只是抽象了局部的一部分。
抽象类+接口:
鸟:
接口: