-1

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

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) 更好,因为它很简单。我应该在面试中使用什么?

4

2 回答 2

0

您的Vehicle类具有基本方法和属性,例如engine()licensePlate = ''。所有车辆都将具有这些方法和属性。
现在CarBus类彼此不同,所以你VehicleCarBus类中扩展类以具有相同的基本功能,但在特定功能上有所不同(比如Carcan have stereoType = ''while Buscan have 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()
    {
        /* ... */
    }
}
于 2014-09-05T06:33:09.517 回答
0

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

于 2014-09-05T06:32:32.043 回答