使用继承来减少重复代码的缺点是什么?

时间:2016-05-10 23:58:54

标签: c++ inheritance visual-c++

我正在为我正在研究的项目编写一系列专门的数据结构类,我注意到它们或多或少共享几个完全相同的属性和功能。

我可以只使用重复的代码,或者让它们从共享的基类继承,以便减少代码总量(这使整个事情更易于维护)。但唉,我现在无法决定该怎么做。

我或多或少地理解了继承路由的优点,但是当你将它与重复代码放在一起时有什么缺点?

对于长期而言,哪条路线更加明智?'项目

1 个答案:

答案 0 :(得分:1)

从设计角度来看,继承违反了封装。通过从类继承,您可以将新类与父类的实现细节链接起来,并非所有这些都可能是继承类的特定实现所必需的。

例如,假设您有一个班级weight_。此类有许多私有变量,例如maxSpeed_fuelCapacity_bicycle

现在让我们说你继承了班级fuelCapacity_。新类将具有与<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView3" /> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView2" /> </LinearLayout> </LinearLayout> 相关联的所有详细信息,即使它们不是必需的。这种事情可能会非常痛苦,因为对象变得更加复杂,因为破坏父级的更改也会破坏继承类,即使它们实际上并没有使用代码的易变部分。

更安全的选择是composition