一.继承中的方法重载(名称屏蔽)
如果在基类中有某个方法被多次重载,那么在子类中重新定义该方法名称时并不会屏蔽在基类中的任何一个版本。在子类中,基类和子类的该方法的任何一个版本都可以正常工作。例如:
输出结果为:
二.如何在组合与继承之间进行选择
组合主要用途是想在新类中使用现有类的功能。而继承是使用某个现有类并考虑开发他的一个特殊版本。这意味着,对于组合来说,新类与现有类是一个“has-a”的关系,对于继承来说,这是“is-a”的关系。在面向对象编程中,生成和使用代码最有可能采用的方法就是直接将数据和方法包装进一个类中,并使用该类的对象,也可以用组合技术使用现有类来开发新类,而继承技术其实是不太常用的。尽管强调继承,但是并不意味着要尽可能使用它,相反,应当慎用这一技术,其使用场合仅限于你确信使用该技术确实有效的情况。到底该使用组合还是继承,一个最清晰的判断方法就是问一问自己是否需要从新类向基类进行向上转型。如果必须向上转型,则继承是必要的,如果不需要,则需要好好考虑了。