接口与抽象类

抽象类:

  包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。(否则编译器会报错)并不需要所有的方法都是抽象的。

  如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中的所有抽象方法提供方法定义。如果不这样做(可以不这样做),那么导出类便也是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。

  创建抽象类和抽象方法非常有用,因为他们能使类的抽象性明确起来,并告诉用户和编译器准备怎么使用他们。抽象类使很有用的重构工具,他们使得我们可以很容易地将公共方法沿着继承层次结构向上移动。

  abstract关键字允许人们在类中创建一个或多个没有任何定义的方法--提供了接口部分,但是没有提供任何相应的具体实现,这些实现是由此类的继承者创建的,且必须覆盖这些接口方法。

接口:

  Interface关键字产生一个完全抽象的类,他没有提供任何具体实现。他允许创建者确定方法名,参数列表和返回类型,但是没有任何方法体,接口只提供了形式而没有提供任何具体实现。

一个接口表示:“所有实现了某个特定接口的类看起来都是这样,他们都拥有这个接口的抽象行为”。接口用来建立类与类之间的协议。

  接口不仅仅是一个极度抽象的类,因为他允许人们通过创建一个能够向上转型为多种基类的类型,来实现某种相似于多重继承变种地特性。

  一旦实现了某一个接口,他就变成了一个普通的类。

  无论是否显示地声明,接口都是public的,在接口中被定义的方法也必须是public的;否则他们将只能得到默认的包访问权限,其可访问权限就降低了。

  相对于抽象类,接口可以更大程度的实现完全解耦。

原文地址:https://www.cnblogs.com/jhdcjh/p/10674208.html