我被要求用面向对象的编程术语来描述车辆,汽车,丰田之间的关系(比如说在php环境中)。我很难过。有人可以帮我吗?谢谢......
答案 0 :(得分:22)
我认为丰田指的是公司。
我会说:
车辆是一个物体,而汽车是一种车辆。丰田是Vehicle对象的特定实现者,brake
方法被重载以返回false。
答案 1 :(得分:5)
汽车是汽车,丰田汽车是汽车。
最直截了当的说法是car
可以是vehicle
的子类,而toyota car
可以是car
的子类。
当然,Toyota
也可以指代公司,在这种情况下,事情会有所不同。我很确定上面的段落是他们期望听到的。
答案 2 :(得分:4)
Car 是类型的广告系列 - 因此您可以将Vehicle
视为Car
的基类。
丰田生产汽车。我倾向于将manufacturer
成员变量添加到Vehicle
,而不是将其作为继承关系。然后,对于由丰田制作的Car
的实例,请设置car.manufacturer = "Toyota"
。
答案 3 :(得分:3)
尴尬:汽车是车辆的子类,卡车也是如此。 丰田是一家生产汽车和卡车的制造商;所以丰田应该是汽车制造商属性的几个潜在价值之一。
class Vehicle{
protected $_model;
protected $_manufacturer;
public __construct($manufacturer) {
$this->_manufacturer = $manufacturer;
}
}
class Car extends Vehicle{
public __construct($model,$manufacturer) {
parent::__construct($manufacturer);
}
$this->_model = $model;
}
class Truck extends Vehicle{
public __construct($model,$manufacturer) {
parent::__construct($manufacturer);
}
$this->_model = $model;
}
$a = new Car('Avensis','Toyota');
$b = new Truck('Land Cruiser','Toyota');
答案 4 :(得分:2)
你的意思是:
class Vehicle{
}
class Car extends Vehicle{
}
class Toyota extends Car{
}
答案 5 :(得分:2)
“Vehicle”将是一个基类,“Car”将是一个扩展,继承或衍生自“Vehicle”的类(取决于所使用的语言),理想情况下“Toyota”应该是a的值这两个类别之一的“品牌”或“制造”属性。
答案 6 :(得分:2)
车辆是基类。汽车是派生类。丰田(可能)是一个可以分配给Vehicle类“品牌”成员的价值。从理论上讲,你可以从车辆中获取丰田(或者那个订单上的东西),但IMO通常是一个糟糕的主意。推导通常应该反映功能,并且附加到品牌的功能几乎没有。
答案 7 :(得分:2)
考虑它的最基本方法是在你正在使用的逻辑层次结构中。这实际上适用于世界上任何事物。每个人在这里说的都是现场,但如果你不理解OOP,它可能无法帮助你理解他们在说什么。所以请允许我详细说明。
车辆:车辆可以是任何类型的运输工具。请记住,它可能是飞机,火车,汽车,自行车,热气球等。车辆是用来从一个地方到另一个地方的东西。所以作为车辆的基类告诉你它将成为一个运输设备。
汽车:汽车是一种形式的汽车。因此,它扩大了车辆。汽车可以被描述为具有4个车轮,2-n门(取决于汽车),发动机,方向盘,雨刷,前灯,闪光灯,制动器,加速器等的车辆。因此,汽车进一步描述了您的车辆是什么指的是。 丰田:丰田汽车是一种汽车。因此,它延伸汽车。 (如果您正在使用卡车类,它也可以扩展卡车)。丰田的某些元素可能不适用于每辆车。因此,为了进一步确定汽车的类型,丰田可以指定汽油里程,车门数量,颜色,发动机尺寸等。希望有所帮助。
答案 8 :(得分:1)
答案 9 :(得分:1)
车辆是一类。 汽车是汽车的子类。 丰田可能是Car类的(相当通用的)实例,或者是添加丰田特定功能的子类。
答案 10 :(得分:1)
汽车是汽车,丰田是汽车。
因此,丰田可能是汽车的子类,而汽车可能是汽车的子类。
class Vehicle {
}
class Car extends Vehicle {
}
class Toyota extends Car {
}
例如,汽车可能有一个成员var来指示车轮的数量和一个打开发动机的功能(并非所有车辆都有发动机)。虽然丰田可能拥有与汽车相同的变速器,加上包含车型名称的字符串以及要求对踏板进行保修的方法; - )
答案 11 :(得分:1)
你可以采取不同的方法。
Car
是Vehicle
的子类。 Toyota
是Car
的子类。
Car
是Vehicle
的子类。 Car
有一个名为make
的属性。您实例化Car并将其make
设置为“Toyota”。
有更多的方法可以做到这一点,但这两个是最明显的,符合OOP概念。
关键是问自己那里最常用的术语是什么?这是车辆。您可以拥有多种车辆,如卡车,SUV,自行车,气垫船和汽车。因此,在OOP中,您更具体的类继承自更通用的类。
答案 12 :(得分:1)
以面向对象的术语 车辆将成为基类 汽车将成为汽车的子类
丰田将品牌作为属性。
答案 13 :(得分:1)
我的看法: “丰田”不应该来自“汽车”,因为丰田是一家公司,而不是一辆特定的汽车。 “toyota_car”可以来自“car”。 “toyota”应来自“制造商”类,该类源自“公司”类。 “vehicle”类应该有一个类成员指向类“manufacturer”的类成员。在由Toyota制造的汽车的情况下,类“car”的实例化对象应该具有指向类型为“toyota”的Singleton对象的继承类成员。 (C ++)
答案 14 :(得分:1)
当然,这不是面试官想要听到的答案,但面向对象编程的目标不是模拟整个世界,而只是提供抽象数据类型,模拟特定概念。您的应用领域。
因此,三者之间的关系完全取决于您正在制作的应用程序。车辆和汽车完全可能是相同的级别。许多应用可能不关心它是什么类型的车辆。他们也可能不关心它是什么品牌,也允许你扔掉丰田班。
OOP可能是一个有用的工具,如果没有被那些认为编程的目标是生成整个宇宙的UML图的白痴人质所挟持。