接口与抽象(abstract and interface)
接口和抽象
接口(interface)就是一种特殊的abstract class,但是比abstract class更加抽象。
定义接口有利于代码的规范。(接口分离原则)
abstract class 表示的是is a关系,interface表示的是like a关系。
抽象类强调的是从属关系,接口强调的是功能。
interface就是Java多继承曲线救国的方式,作为继承关系的补充。
| 类型 | abstract class | Interface |
|---|---|---|
| 定义 | abstract关键字 | Interface关键字 |
| 继承 | 抽象类可以继承一个类和实现多个接口, 子类只可以继承一个抽象类 |
接口可以继承接口(一个或多个),子类可以实现多个接口 |
| 访问修饰符 | public/protectd/default | 默认Public,不可以使用其他修饰符 |
| 方法实现 | 可定义构造方法,可以有抽象方法和具体方法 | 接口是完全抽象的。且方法都是抽象的,不存在方法的实现 |
| 实现方式 | 子类使用extend关键字来继承抽象类, 如果子类不是抽象类的话,它需要提供抽象类的所有声明的方法的实现 |
子类使用implement来实现接口,它需要提供接口中所有声明方法的实现 |
| 作用 | 把想用的东西提取出来,即重用 | 把程序模块进行固化的契约,为了降低耦合度 |
抽象
abstract class animal (){} // abstract define
// dog is a kind of animal
class dog extends animal
// cat is a kind of animal
class cat extends animal
继承和实现
A implement Action // A can do Action
A extends B // A is a B

浙公网安备 33010602011771号