OOP中的继承——继承一切,不覆盖任何东西
Inheritance in OOP-inheriting everything and overriding nothing
我正在使用 OOP 语言 (C++)。我有一个名为 Terrain 的基地 class。在我的世界中,Terrain 的每个子class——森林、草地、沙漠等——继承了 Terrain 的所有方法并且不覆盖任何东西。 subclass 所做的一切,base class 所做的一切。这样做似乎是在浪费精力,因为我意识到我能想到的子 class 所做的一切都可以由基 class.
完成
这是否意味着我应该放弃继承并使用不同的方法?我最初的想法是使用工厂模式来生成 Terrain 对象,并使用 subclasses 在其构造函数中的赋值来构造它们。例如,工厂会将 "desert" 作为输入参数。并生成一个带有沙质纹理的 Terrain 对象,添加一些仙人掌,设置干燥度 属性,等等。然而,这并不是一个完美的解决方案。例如,使用此方法,您无法根据类型区分沙漠或草地或任何此类对象。
你完全说对了。如果数据结构相同,方法都相同,只是所需的 属性 值不同,那么工厂模式就是最佳选择。继承只需要大量额外的代码和维护。
我正在使用 OOP 语言 (C++)。我有一个名为 Terrain 的基地 class。在我的世界中,Terrain 的每个子class——森林、草地、沙漠等——继承了 Terrain 的所有方法并且不覆盖任何东西。 subclass 所做的一切,base class 所做的一切。这样做似乎是在浪费精力,因为我意识到我能想到的子 class 所做的一切都可以由基 class.
完成这是否意味着我应该放弃继承并使用不同的方法?我最初的想法是使用工厂模式来生成 Terrain 对象,并使用 subclasses 在其构造函数中的赋值来构造它们。例如,工厂会将 "desert" 作为输入参数。并生成一个带有沙质纹理的 Terrain 对象,添加一些仙人掌,设置干燥度 属性,等等。然而,这并不是一个完美的解决方案。例如,使用此方法,您无法根据类型区分沙漠或草地或任何此类对象。
你完全说对了。如果数据结构相同,方法都相同,只是所需的 属性 值不同,那么工厂模式就是最佳选择。继承只需要大量额外的代码和维护。