Oop 在面向对象编程方面,哪种方法更好?
超类->车辆| 子类->汽车和自行车 如果类Car需要startCar()方法(该方法输出 调用时为值“BRUMM”的字符串)甚至类 Bike需要一个类似的方法startBike()(输出 调用时使用一个值为“TRUMM”的字符串)会更好吗 这样做,或者换成一辆startVehicle() 超类车辆中的方法,其编码不同 各个子类的不同输出:汽车和自行车Oop 在面向对象编程方面,哪种方法更好?,oop,Oop,超类->车辆| 子类->汽车和自行车 如果类Car需要startCar()方法(该方法输出 调用时为值“BRUMM”的字符串)甚至类 Bike需要一个类似的方法startBike()(输出 调用时使用一个值为“TRUMM”的字符串)会更好吗 这样做,或者换成一辆startVehicle() 超类车辆中的方法,其编码不同 各个子类的不同输出:汽车和自行车 编辑:Bike首先指的是摩托车,而不是分别使用startCar()和startBike()[和startVehicle()],该函数可以[而且应
编辑:Bike首先指的是摩托车,而不是分别使用startCar()和startBike()[和startVehicle()],该函数可以[而且应该]被称为“start()”(例如Car.start()、Bike.start()、Vehicle.start()),因为每个函数都有相同的意图,并且设计用于提供相同类型的输出 现在,如果大多数/所有子类都要实现start函数,那么我建议在超类中创建start()函数,然后在子类中重写它 此外,如果Car.start()和Bike.start()有很多(但不是全部)相同的功能(例如,它们都启动某种发动机),则将类似的代码放入Vehicle.start()。然后,当您编写Car.start()和Bike.start()来重写Vehicle.start()时,相应的函数应该在运行其特定于类的代码之前调用Vehicle.start()方法
另外,绝对不要将超类的start()函数编码为根据类的实际类型输出不同的值;基本上,一个超类不需要知道子类。。。否则,有什么意义呢?:) 首先,不必分别使用startCar()和startBike()[和startVehicle()],该函数可以[而且应该]被称为“start()”(例如Car.start()、Bike.start()、Vehicle.start()),因为每个函数都有相同的意图,并且设计为提供相同类型的输出 现在,如果大多数/所有子类都要实现start函数,那么我建议在超类中创建start()函数,然后在子类中重写它 此外,如果Car.start()和Bike.start()有很多(但不是全部)相同的功能(例如,它们都启动某种发动机),则将类似的代码放入Vehicle.start()。然后,当您编写Car.start()和Bike.start()来重写Vehicle.start()时,相应的函数应该在运行其特定于类的代码之前调用Vehicle.start()方法
另外,绝对不要将超类的start()函数编码为根据类的实际类型输出不同的值;基本上,一个超类不需要知道子类。。。否则,有什么意义呢?:) 你如何启动自行车?有摩托车,尤其是在中国。关于这个主题:您的示例非常明显,但是您不应该仅仅为了oop而产生泛化和基类。如果有人会使用它,我很抱歉,如果我造成了任何混乱,我实际上指的是一辆摩托车,在世界许多地方,摩托车被广泛用作交通工具,通常被称为自行车。为了避免进一步的问题,我在我的问题后面加了一条注释。你如何启动自行车?有摩托车,特别是在中国。关于这个主题:您的示例非常明显,但是您不应该仅仅为了oop而产生泛化和基类。如果有人会使用它,我很抱歉,如果我造成了任何混乱,我实际上指的是一辆摩托车,在世界许多地方,摩托车被广泛用作交通工具,通常被称为自行车。为了避免进一步的问题,我在问题后面加了一条注释。