Java 继承概念中的传递性
问题: 在java继承的概念中,我读到了在java中使用继承的各种优点,在这些优点中,我遇到了一个称为传递性的优点。 现在我通过谷歌找到了及物动词的含义,我得到的含义是“它是一种关系,它适用于序列的连续成员之间,它也必须适用于按顺序排列的任意两个成员之间。例如,如果a大于B,B大于C,那么a大于C”。 我理解它的意思,但无法在及物性这个词和继承的概念之间找到直接的联系Java 继承概念中的传递性,java,inheritance,Java,Inheritance,问题: 在java继承的概念中,我读到了在java中使用继承的各种优点,在这些优点中,我遇到了一个称为传递性的优点。 现在我通过谷歌找到了及物动词的含义,我得到的含义是“它是一种关系,它适用于序列的连续成员之间,它也必须适用于按顺序排列的任意两个成员之间。例如,如果a大于B,B大于C,那么a大于C”。 我理解它的意思,但无法在及物性这个词和继承的概念之间找到直接的联系 有什么解释可以更清楚地理解这一点吗?如果一辆瓷器是一辆汽车,一辆汽车是一辆汽车,那么瓷器就是一辆汽车 编辑-根据要求,这里有一些
有什么解释可以更清楚地理解这一点吗?如果一辆瓷器是一辆汽车,一辆汽车是一辆汽车,那么瓷器就是一辆汽车 编辑-根据要求,这里有一些代码来演示这一点
public class Automobile
{
private int fuel = 0;
public void giveFuel(int amount)
{
fuel += amount;
}
}
public class Car extends Automobile
{
}
public class Porche extends Car
{
}
所以现在我显然可以做到:
Automobile auto=新车()代码>
auto.giveFuel(5)代码>
但我甚至可以做到:
Porche-Porche=new-Porche()代码>
porche.giveFuel(5)代码>
如果功能需要汽车:
public class Person
{
private Automobile ride = 0;
public void setRide(Automobile ride)
{
this.ride = ride;
}
}
我能做到:
Porche-Porche=new-Porche()代码>
Person=newperson()
person.setRide(porche)代码>
如果子类重写了超类的函数,这将使它们的行为有点不同,那么这一点尤其有用。因此,可能每个汽车子类都有一个不同的drive()
方法,该方法消耗的燃料量不同(汽车本身可能是抽象的),当人们想要使用汽车时,他会调用ride.drive()
,并会消耗正确的燃料量。您经常会看到继承被描述为一种is-a关系
例如,让我们以车辆为例,现在它是一个抽象术语,它可能意味着几件事,因此在我们的代码中,将vehicle
作为抽象类
是有意义的
public abstract class Vehicle {
private String name;
private int gasAmount;
//constructors, getters etc...
public abstract void start();
public abstract void drive();
// other methods
}
public class Truck extends Vehicle
{
public Truck(string name, int gas){
:super(name,gas)
}
@Override
public void drive(){}
@Override
public void start(){}
}
卡车是一种车辆,因此它会意识到车辆中的方法,并可以覆盖这些方法。如果gasAmount
和name
受到保护
,则子类(在本例中为Truck
)将能够查看和访问它们
让我们更进一步,Truck
,虽然更具体一点,但可以描述多辆卡车,例如,一辆自卸车,因此:
public class DumpTruck extensed Truck
这里我们提供了两种含义,一种是语法,一种是逻辑和数学,我已经提供了逻辑和数学的含义。如果我错了,请纠正我。继承真的意味着这一点吗?我用java编写了一些小程序,使用继承的概念,我清楚地注意到了可重用性的优势,但从来没有注意到您提供的可传递性的示例。您能写一个小片段来说明可传递性吗?当然,给我几分钟时间。