根据面向对象程序设计( OOP ),需要抽象类来建模那些在现实世界中不存在但作为几个真实世界对象的基类的对象。
例如:
BankAccount
/\
/ \
/ \
/ \
Current Savings
Account Account在这里,BankAccount应该被建模为一个抽象类。
但是在C#/Java中使用抽象类的技术原因是什么?link text
例如:
OOP使用接口的原因是建模行为继承(没有真正的层次关系的继承)。
在C#/Java中使用接口的技术原因是为了解决多重继承问题(如果我没有错的话)。
发布于 2009-07-27 01:45:19
抽象类可以具有默认行为,如果可能的话;接口不能。
抽象类可以为所有方法或没有方法提供默认行为;开发人员的选择;接口不能。
抽象类可以具有与所有子类共享的状态;接口不指定状态。
因此,您的抽象BankAccount可以具有一个balance属性,该属性可以授予储蓄和支票访问权。
发布于 2009-07-27 01:43:57
抽象类无法实例化,因为它们缺乏方法定义。
你可以在超类中定义一个垃圾--无所事事--方法函数。但那太傻了。不要定义“什么都不做”,不要定义任何东西。
由于缺少一具身体,该方法是抽象的。这使得整个课程变得抽象起来。
为什么?
因为您不想指定“什么都不做”方法体。您希望完全省略方法体,留下一个位置持有者由一个子类来填充。
创建超类以包含子类之间的常见行为。在某些情况下,超类不能是一个完整的类,因为每个子类必须提供一个覆盖或扩展。
我们提供了一个抽象的超类,因为我们需要子类来提供缺少的特性。
发布于 2009-07-27 01:46:16
I‘我不确定我是否理解你的问题,但是,抽象类不能被实例化,所以它只用于这个目的。
https://stackoverflow.com/questions/1186092
复制相似问题