继承,在 C++ 中创建子类时可以删除/忽略父类的属性吗?

Posted

技术标签:

【中文标题】继承,在 C++ 中创建子类时可以删除/忽略父类的属性吗?【英文标题】:Inheritance, Can you remove / ignore the attribute of a parent class when creating a child class in C++? 【发布时间】:2020-07-31 20:02:29 【问题描述】:

我是编程新手,我正在研究继承原理,我正在做一个练习,要求我创建一个名为“normalClock”的父类,属性包括时间和上午或下午, 我需要创建一个继承自“normalClock”的子类,但这个仅适用于上午时间,仅显示早上时间,我是否可以修改父类的属性.. 可以说删除“PM”而不违反继承规则?我不想改变父类的任何东西我只想知道它是否可以在子类中完成。

提前致谢

【问题讨论】:

不确定我是否理解正确,但我认为不可能。显示一些代码有助于澄清您的问题。 我不明白如何从时钟中删除 PM。午饭后时钟做什么? "仅有效?"如果您描述了您的孩子班级在上午所做的事情,那么有人可能会知道下午时间会采取什么行动。示例:也许在 AM 中,对象在已知地点输出时间,即它通过更新屏幕来工作。另一方面,在 PM 中,可能对象 a) 清除输出(在逻辑上与更新屏幕不同)或 b) 输出消息“PM 不工作”或者好吧,发挥你的想象力。总是可以实现一个什么都不做的方法。 【参考方案1】:

这在 C++ 中是不可能的(除了一些非常混乱的模板/宏 hack)。

此外,您想要首先这样做表明您的设计可能是错误的。您的“AM only”时钟违反了Liskov Substitution Principle——也就是说,适用于normalClocks 的代码也应该适用于morningClocks,但这种设计会导致这两种类型不兼容。

【讨论】:

以上是关于继承,在 C++ 中创建子类时可以删除/忽略父类的属性吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++中,子类会继承父类的虚函数表!对于父类的析构函数(虚函数) 也会继承吗?

python 继承

Java中子类继承了父类的私有属性及方法吗?

C++中子类从基类都继承啥?

关于C++父类与子类之间变量的问题

Java中类变量可以被继承吗