Oop 如何避免在嵌套类结构中重复属性?
例如,我有以下类结构:Oop 如何避免在嵌套类结构中重复属性?,oop,Oop,例如,我有以下类结构: Animal ---Cat ------property: CatCollar (boolean) ---Dog ------BigDog ------TinyDog ---------property: CatCollar (boolean) 我在Cat类和TinyDog类中有相同的属性CatCollar,但是这个属性不应该在BigDog类中。我的评论员告诉我,这是一个糟糕的结构,因为它会导致重复。我无法更改类的结构,但只能更改此属性(位置和其他操作)。也许有一些OO
Animal
---Cat
------property: CatCollar (boolean)
---Dog
------BigDog
------TinyDog
---------property: CatCollar (boolean)
我在Cat类和TinyDog类中有相同的属性CatCollar,但是这个属性不应该在BigDog类中。我的评论员告诉我,这是一个糟糕的结构,因为它会导致重复。我无法更改类的结构,但只能更改此属性(位置和其他操作)。也许有一些OOP工具可以让你做到这一点?我是否可以避免复制一个属性?如果是,如何实现?在面向对象中,每个对象都有什么“数据”(即私有状态)并不重要。它只关心它们提供什么行为,即使在继承树中也是如此 所以,如果“属性”指的是公共状态,或者是通过公共getter访问的私有状态,那么在一定程度上您已经离开了面向对象。从面向对象的角度讨论什么是正确的已经没有意义了 如果您的意思是作为一个私有国家,共享一些潜在的行为,那么您可能需要授权。也就是说,
Cat
和TinyDog
都实现了一些描述所需行为的接口,然后在它们都委托给(即包含)的某个类中实现它。不幸的是,Java本机不支持这一点(例如在Kotlin中),因此需要一些样板文件