抽象类和接口
抽象类与接口
抽象类(或类型)是程序声明的主格类型系统中的一种类型。虽然名称暗示了这一点,但抽象类可能包含也可能不包含抽象方法或属性。区分类是指可用于实现抽象类型的不同语言构造。抽象类可以通过设计问题来表征,该问题与最佳的面向对象编程和未完成的性质保持一致。
接口是类必须实现的抽象类型,用于指定接口(一般来说)。接口可能只包含方法签名和常量声明(静态和最终),从不包含方法定义。接口模拟多个继承,并用于编码各种类型的类之间共享的相似性。
可以通过几种不同的方式创建,表示或模拟抽象类型。程序员可以通过显式地使用关键字abstract来表示抽象类型,方法是在类定义中包含一个或多个方法,从另一个抽象类型继承而不覆盖完成类定义所必需的缺失特性,或者通过向面向对象发送特定方法称为此的编程语言,不直接实现该方法。
可以使用抽象方法定义接口。类也可以在接口中实现。如果一个类确实实现了一个接口并且没有实现它的所有方法,那么必须使用signifier摘要,否则不需要该指示符(因为所有接口本质上都是抽象的)。类也可以实现多个接口。
虽然接口用于指定通用接口,但抽象类型可用于定义和实施协议(这是一组操作,实现所需协议的所有对象必须支持这些操作)。没有子类型的语言中不会出现抽象类型。因为这种子类型被迫实现所有需要的功能,所以确保程序执行的正确性。有几种方法可以创建抽象类型:完整的抽象基类是显式声明为抽象或包含抽象(未实现)方法的类; Common Lisp Object Systems包括基于Flavors系统的mixin;当然是Java;和Traits,作为Smalltalk的扩展。
摘要: 1.抽象类(或类型)声明程序;接口是所有类必须实现的抽象类型,以指定它们的接口。 2.可以使用关键字明确表示抽象类型;接口本质上是抽象的,因此根本不需要使用关键字来表示(除非特定的类实现接口但不实现其所有方法)。