可能重复:
Interface vs Abstract Class (general OO)
我可以实例化抽象类吗?如果是这样的话,我为什么不让我所有的非密封类变得抽象呢?
如果我不能实例化它,那么与接口有什么区别呢?抽象类可以具有“基类”功能吗?接口和抽象类之间还有更多的区别吗?
发布于 2010-09-13 16:45:07
不能实例化抽象类。
抽象类和接口之间的区别在于抽象类可以具有方法的默认实现,因此如果不在派生类中覆盖它们,则使用抽象基类实现。接口不能有任何实现。
发布于 2010-09-13 16:44:28
接口不提供实现。您还可以实现多个接口。
可以在抽象类内部提供实现,但只能从一个基类型继承。
在这两种情况下,您都不能直接实例化任何一个。
发布于 2010-09-13 16:44:03
不能直接创建抽象类的实例。但是,您可以提供方法和/或属性实现,这在接口中是做不到的。此外,您只能继承一个类,抽象或其他类,而您可以继承(实现)任意多个接口。
abstract class A
{
public int Foo() { return 1; } // implementation defined
}
class B : A
{
}
interface C
{
int Foo() {return 1;} // not legal, cannot provide implementation in interface
}
// ... somewhere else in code
A a = new A(); // not legal
A a = new B(); // legalhttps://stackoverflow.com/questions/3702498
复制相似问题