OOD启思录笔记

本文探讨了抽象类的概念及其在面向对象编程(OOP)中的作用,特别是作为继承层次结构的基础。文章还讨论了继承关系的重要性,并提出了评估继承有效性的关键问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知道如何实例化对象的类称为抽象类(abstract class)。知道如何实例化对象的类称为具体类(concrete class)。

在面向对象范型中,抽象类的一个重要用途是帮助创建继承层次结构。

如果我拿起一只闹钟对你说:“你觉得我的水果怎么样?”你会认为我疯了;而如果我拿起一只苹果问同样的问题,你就会觉得很正常。“水果”这个称谓表达了有用的信息,虽然你不能创建水果对象。事实上,它是一个类的(概念),但不知道如何实例化它这种类型的对象。

引擎中包含活塞,引擎有最大马力。活塞是有行为的,因此被建模成类,而最大马力只是一个描述性的属性,没有行动。

继承关系是面向对象范型中比较重要的关系之一。用它来表示数之间的“a-kind-of”关系是最好不过了。它的主要用途有两种,它被用作表示两个类之间的共性机制(泛化),还用来表示一个类是另一类的特殊类型(特化)。

决定性的问题是,“这个属性的值是否影响类的行为”?

对属性值的显示的分情况分析常常是错误的。类应当解融合成一个继承层次结构,每一个属性值都被换成一个派生类。

如果你觉得需要在运行时创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。

在派生类中用空方法(也就是什么都不做的方法)来覆写基类中的方法应当是非法的。

只要在面向对象设计中用到了继承,问自己两个问题:
1.派生类是否是它继承的哪个东西的一个特殊类型?
2.基类是不是派生类的一部分?

如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值