【发布时间】:2018-09-01 17:28:51
【问题描述】:
假设你有一个类Person,它包含很多信息。现在我考虑添加一个新变量,它不应该从Person 类访问,而是我想扩展一个LivingBeing 类(这个例子只是针对这个线程,所以请不要质疑它的意义)。稍后,它可能不仅仅是一个添加的变量,但现在,LivingBeing 将拥有一个 Person 不应该拥有的变量。当用户决定时,Person 稍后将变为 LivingBeing。
我必须做很多修改才能使这种继承工作,但最重要的是我想知道你是否会认为它是好的风格还是高效的。是否值得为这种简单的继承更改大量代码?
另一种方法是将这个特定变量添加到Person,并且在“稍后”需要它之前不要使用它。不过,这似乎是一种糟糕的风格,继承的存在是有原因的,我想我应该使用它。
编辑:可能重要的是只有一些Person-Objects 变成LivingBeings,它们共存。所以区分Person和LivingBeing对象会更容易,而不是总是有Person。
【问题讨论】:
-
如果
Person would later on become LivingBeing你应该使用组合而不是继承。 -
不错!没有听说过这个,但我不确定这是否真的解决了我的问题。我可能会添加其他信息。
-
“优先组合优于继承”是 OOP 的基本范式之一。
-
但是可读性不也是编程整体的通用范式吗?我不会为了这样一个简单的问题而牺牲很多可读性吗?
-
@GhostCat 不,它不是 OOP 中的基本范式。如果有其他的话,更准确地说,继承是 OOP 的基本范式,但在设计中应谨慎使用。
标签: java oop object inheritance extends