13.4
在C++语言中,完全可以使用公有继承来建立 has-a、is-implemented-as-a或uses-a关系;不过,这样
做通常会导致编程方面的问题。因此,还是坚持使用is-a关系吧。
多态公有继承
RatedPlayer 继承范例很简单。派生类对象使用基类的方法,而未做任何修改。不过,可能会遇到这样
的情况,即希望同一个方法在派生类和基类中的行为是不同的。换句话来说,方法的行为应取决于调用该
方法的对象。这种较复杂的行为称为多态 -- 具有多种形态,就是指同一个方法的行为将随上下文而异。
有两种重要的机制可用于实现多态公有继承:
●在派生类中重新定义基类的方法。
● 使用虚方法。
现在来看另…个例子。由于Webtown俱乐部的工作经历,您成了Pontoon国家银行的首席程序员。银
行要求您完成的第一项工作是开发两个类。一个类用于表示基本支票账户 -- Brass Account,另一个类用
于表示代表Brass Plus支票账户,它添加了透支保护特性。也就是说,如果用户签出一张超出其存款余额
的支票 -- 但是超出的数额并不是很大,银行将支付这张支票,对超出的部分收取额外的费用,并追加罚
款。可以根据要保存的数据以及允许执行的操作来确定这两种账户的特征。
下面是用于 Brass Account支票账户的信息。
● 客户姓名。
● 账号。
● 当前结余。
下面是可以执行的操作:
创建账户。
存款。
● 取款。
● 显示账户信息。
Pontoon 国家银行希望Brass Plus支票账户包含 Brass Account的所有信息以及以下信息项:
● 透支上限。
● 透支贷款利率。
当前的透支总额。
不需要新增操作,但有两种操作的实现不同:
● 对于取款操作,必须考虑透支保护。
● 显示操作必须显示Brass Plus账户的其他信息。
我们将第 ·个类命名为Brass,第二个类为BrassPlus。应从Brass公有派生出BrassPlus吗?要回答这
个问题,必须先回答另一个问题:BrassPlus类是否满足is-a条件?当然满足。对于Brass对象是正确的事
情,对于BrassPlus对象也是正确的。它们都将保存客户姓名、账号以及结余。使用这两个类都可以存款、
取款和显示账户信息。请注意,is-a关系通常是不可逆的。也就是说,水果不是香蕉;同样,Brass对象不
具备 BrassPlus 对象的所有功能。
13.4.1 开发Brass 类和 BrassPlus 类文章来源:https://www.toymoban.com/news/detail-813203.html
Brass Account类的信息很简单,但是银行没有告诉您有关透支系统的细节。当您向友好的Pontoon国
家银行代表询问时,他提供了如下信息:
● Brass Plus 账户限制了客户的透支款额。默认为500元,但有些客户的限额可能不同。
● 银行可以修改客户的透支限额。
● Brass Plus 账户对贷款收取利息。默认值是10%,但是有些客户的利率可能不同。文章来源地址https://www.toymoban.com/news/detail-813203.html
到了这里,关于问题。因此,还是坚持使用is-a关系吧。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!