在面向对象编程方面哪种方法更好?

时间:2012-08-04 08:09:14

标签: oop

超类 - >车辆| 子类 - >汽车与汽车自行车

如果Car类需要一个startCar()方法(输出 调用时的值为“BRUMM”的字符串,甚至是类 Bike需要一个类似的方法startBike()(输出 调用时的值为“TRUMM”的字符串)会更好吗? 以这种方式去做,或者有一个startVehicle() 超类车辆中的方法,其编码方式不同 各个子类的不同输出:汽车和自行车?

编辑:自行车是指摩托车

1 个答案:

答案 0 :(得分:4)

首先,不是分别使用startCar()和startBike()[和startVehicle()],而是可以[并且应该]只调用'start()'(例如Car.start(),Bike.start( ),Vehicle.start()),因为每个函数具有相同的意图,并且旨在提供相同类型的输出。

现在,如果你的大多数/所有子类都要实现一个start函数,那么我建议在超类中创建start()函数,然后在子类中重写它。

此外,如果Car.start()和Bike.start()共享很多(但不是全部)相同的功能(例如,它们都启动某种引擎),那么将类似的代码放入Vehicle中。开始()。然后,当您编写Car.start()和Bike.start()以覆盖Vehicle.start()时,相应的函数应该在运行其特定于类的代码之前调用Vehicle.start()方法。

P.S。绝对不要对超类的start()函数进行编码,以根据类的实际类型输出不同的值;基本上一个超类不应该知道子类...否则,重点是什么? :)