假设我们设计了一个停车场类。定义车辆有两种方法。
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 = ''
等。所有车辆都将具有这些方法和属性
现在Car
和Bus
类彼此不同,所以您在Car
和Bus
类中扩展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()
{
/* ... */
}
}