OOD-为什么汽车/公共汽车/摩托车应该源自车辆



假设我们设计了一个停车场类。定义车辆有两种方法。

1)

Abstract class Vehicle {
        protected int size;
        private string plate;
        ...
}
class car : Vehicle{
     car(){base.size = enum.carSize;} 
 }
class bus: Vehicle{
     bus(){base.size = enum.busSize;} 
 }

2)

class Vehicle {
        private int size;
        protected string plate;
        public setSize(int size);
}

然后在停车场类中,我们可以定义

       Vehicle Car;
       vehicle Bus;

哪一个更好?我看到1)用于"破解编码面试"。但我认为这是更好的,因为它很简单。面试时我应该用什么?

如果不同类型的车辆不需要不同类型的功能,则不需要继承。

您的Vehicle类具有基本方法和属性,如engine()licensePlate = ''等。所有车辆都将具有这些方法和属性
现在CarBus类彼此不同,所以您在CarBus类中扩展Vehicle类,使其具有相同的基本功能,但在特定功能上有所不同(例如Car可以具有stereoType = '',而Bus可以具有hasSecondFloor = true

class Vehicle {
    private $licensePlate;
    public function startEngine()
    {
        /* ... */
    }
    public setLicensePlate()
    {
        /* ... */
    }
}
class Car extends Vehicle {
    public function _construct()
    {
       $this->setLicensePlate('ABC-123');
       $this->startEngine();
    }
    public function turnOnStereo()
    {
        /* ... */
    }
}

相关内容

  • 没有找到相关文章

最新更新