What is the difference between an abstract class and an interface?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Interface vs Abstract Class (general OO)
我能实例化一个抽象类吗?如果是这样,为什么我不把所有非密封类都抽象化呢?
如果我不能实例化它,那么与接口有什么区别?抽象类可以具有"基类"功能吗?接口和抽象类之间的区别比这更大吗?
无法实例化抽象类。
抽象类和接口之间的区别在于,抽象类可以具有方法的默认实现,因此,如果不在派生类中重写这些方法,则使用抽象基类实现。接口不能有任何实现。
接口不提供实现。您还可以实现多个接口。
可以在抽象类内部提供实现,但只能从一个基类型继承。
在这两种情况下,都不能直接实例化任何一个。
抽象类:
抽象类可以包含抽象方法和非-抽象方法。
当非抽象类从抽象类继承时类,非抽象类应提供继承的抽象方法的实现。
接口:
接口只是纯抽象类ie接口只能包含函数声明。
默认情况下,接口的所有成员都是公共的并且不能提供任何访问修饰符。
当从接口继承类时,继承的类应提供继承的成员。
不能直接创建抽象类的实例。但是,您可以提供方法和/或属性实现,这在接口中是无法实现的。此外,您只能继承一个抽象类或其他类,而您可以继承(实现)任意多个接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
接口定义了一个契约,您的说法是您将观察一组特定方法签名的实现。
抽象类只是意味着您不能直接创建它的新实例,您可以自由地使用任何其他类特性,即属性。
一方面:您只能从一个抽象类继承。可以将多个接口附加到一个类。