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

时间:2014-09-05 06:18:24

标签: oop parking

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

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)用于"破解编码面试"。但我认为2)更好,因为它很简单。我应该在面试中使用什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您的Vehicle班级有基本方法和属性,例如engine()licensePlate = ''等。所有车辆都具有这些方法和属性 现在CarBus类彼此不同,因此您在VehicleCar类中扩展Bus类以具有相同的基本功能,但是具体功能不同(例如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()
    {
        /* ... */
    }
}