首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#/Java中使用抽象类的技术原因

C#/Java中使用抽象类的技术原因
EN

Stack Overflow用户
提问于 2009-07-27 01:40:32
回答 5查看 3.5K关注 0票数 0

根据面向对象程序设计( OOP ),需要抽象类来建模那些在现实世界中不存在但作为几个真实世界对象的基类的对象。

例如:

代码语言:javascript
复制
   BankAccount            
       /\
      /  \
     /    \
    /      \
Current     Savings
Account     Account

在这里,BankAccount应该被建模为一个抽象类。

但是在C#/Java中使用抽象类的技术原因是什么?link text

例如:

OOP使用接口的原因是建模行为继承(没有真正的层次关系的继承)。

在C#/Java中使用接口的技术原因是为了解决多重继承问题(如果我没有错的话)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-27 01:45:19

抽象类可以具有默认行为,如果可能的话;接口不能。

抽象类可以为所有方法或没有方法提供默认行为;开发人员的选择;接口不能。

抽象类可以具有与所有子类共享的状态;接口不指定状态。

因此,您的抽象BankAccount可以具有一个balance属性,该属性可以授予储蓄和支票访问权。

票数 8
EN

Stack Overflow用户

发布于 2009-07-27 01:43:57

抽象类无法实例化,因为它们缺乏方法定义。

你可以在超类中定义一个垃圾--无所事事--方法函数。但那太傻了。不要定义“什么都不做”,不要定义任何东西。

由于缺少一具身体,该方法是抽象的。这使得整个课程变得抽象起来。

为什么?

因为您不想指定“什么都不做”方法体。您希望完全省略方法体,留下一个位置持有者由一个子类来填充。

创建超类以包含子类之间的常见行为。在某些情况下,超类不能是一个完整的类,因为每个子类必须提供一个覆盖或扩展。

我们提供了一个抽象的超类,因为我们需要子类来提供缺少的特性。

票数 0
EN

Stack Overflow用户

发布于 2009-07-27 01:46:16

I‘我不确定我是否理解你的问题,但是,抽象类不能被实例化,所以它只用于这个目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1186092

复制
相关文章

相似问题

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