假设我们设计了停车场类。有两种方法来定义车辆。
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)更好,因为它很简单。我应该在面试中使用什么?
答案 0 :(得分:0)
如果您不需要为不同类型的车辆提供不同类型的功能,则不需要继承。
答案 1 :(得分:0)
您的Vehicle
班级有基本方法和属性,例如engine()
,licensePlate = ''
等。所有车辆都具有这些方法和属性
现在Car
和Bus
类彼此不同,因此您在Vehicle
和Car
类中扩展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()
{
/* ... */
}
}