【发布时间】:2012-07-24 12:20:01
【问题描述】:
假设我有两节课
class Driver{
//attributes of driver ,ex: driving licence number
// methods related to driving ,ex: drive(Car) , stop(Car)
changeTyre(Car,Tyre); // sometimes the driver can change the tyres right?
}
class Mechanic{
// Hard mechanical stuff , ex: repairEngine(Car)
changeTyre(Car,Tyre); // Simple.hence sometimes the driver also does
}
现在两个changeTyre() 方法的实现将是相同的。
现在我有两个问题,
- 存在重复(重复)代码
- Super 类包含
changeTyre(Car,Tyre)方法似乎没有意义
这种情况是如何处理的?
【问题讨论】:
-
changeTyre(Car,Tyre)作为类方法做了什么?如果实现相同,我希望它不必是类方法(不使用类属性/方法),或者两个类的重叠比您似乎建议的要多(例如,人名可能是为更换轮胎而记录:两个类都有一个 name 属性)在这种情况下,会有一个有意义的基类(例如 Person、CarLover 或其他东西)。 -
changeTyre(Car,Tyre) 是一个类方法,因为它是驾驶员和机械师的行为(我想我是正确的)。我仍然没有“相信”有一个基类包含 changeTyre(Car,Tyre) 方法:(
-
@D-Shan:这也是汽车和轮胎的行为:)
-
@user396672 :|但那是怎么发生的呢?我的意思是当汽车中的这种行为会发生时。例如:像
car.ChangeTyre(Tyre)这样的方法调用发生在哪里:(。它会出现在 Driver 和 Mechanic 类中,对吧?