首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类和接口之间有什么区别?

抽象类和接口之间有什么区别?
EN

Stack Overflow用户
提问于 2010-09-13 16:41:57
回答 6查看 11K关注 0票数 3

可能重复:

Interface vs Abstract Class (general OO)

我可以实例化抽象类吗?如果是这样的话,我为什么不让我所有的非密封类变得抽象呢?

如果我不能实例化它,那么与接口有什么区别呢?抽象类可以具有“基类”功能吗?接口和抽象类之间还有更多的区别吗?

EN

回答 6

Stack Overflow用户

发布于 2010-09-13 16:45:07

不能实例化抽象类。

抽象类和接口之间的区别在于抽象类可以具有方法的默认实现,因此如果不在派生类中覆盖它们,则使用抽象基类实现。接口不能有任何实现。

票数 7
EN

Stack Overflow用户

发布于 2010-09-13 16:44:28

接口不提供实现。您还可以实现多个接口。

可以在抽象类内部提供实现,但只能从一个基类型继承。

在这两种情况下,您都不能直接实例化任何一个。

票数 4
EN

Stack Overflow用户

发布于 2010-09-13 16:44:03

不能直接创建抽象类的实例。但是,您可以提供方法和/或属性实现,这在接口中是做不到的。此外,您只能继承一个类,抽象或其他类,而您可以继承(实现)任意多个接口。

代码语言:javascript
复制
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(); // legal
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3702498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档