Java 是否可以将子类的实例分配给超类的变量?

Java 是否可以将子类的实例分配给超类的变量?,java,inheritance,subclass,superclass,Java,Inheritance,Subclass,Superclass,我对超类和子类背后的定义和逻辑感到困惑 总之,是的。因为子类实例是超类,所以可以将其分配给这样的变量 考虑以下示例-字符串是一个对象,因此此赋值是合法的: 对象obj=abcd;//这是一个字符串文本 总之,是的。因为子类实例是超类,所以可以将其分配给这样的变量 考虑以下示例-字符串是一个对象,因此此赋值是合法的: 对象obj=abcd;//这是一个字符串文本 快速回答您的问题:是的,几乎可以在超类的任何地方指定子类 原因包括继承和面向对象编程。让我给你举个例子。让我们想想火车和火车车厢,它们是

我对超类和子类背后的定义和逻辑感到困惑

总之,是的。因为子类实例是超类,所以可以将其分配给这样的变量

考虑以下示例-字符串是一个对象,因此此赋值是合法的:

对象obj=abcd;//这是一个字符串文本
总之,是的。因为子类实例是超类,所以可以将其分配给这样的变量

考虑以下示例-字符串是一个对象,因此此赋值是合法的:

对象obj=abcd;//这是一个字符串文本
快速回答您的问题:是的,几乎可以在超类的任何地方指定子类

原因包括继承和面向对象编程。让我给你举个例子。让我们想想火车和火车车厢,它们是火车的一部分

超类是轨道车。每辆火车都有重量

public class RailwayCar {
   private int weight;

   public RailwayCar() {
   }

   public RailwayCar(int weight) {
      setWeight(weight);
   }

   public int getWeight() {
      return weight;
   }

   public void setWeight(int weight) {
      this.weight = weight;
   }

   public void arriveAtStation(Station station) {}

   public void leaveStation(Station station) {}
}
那只是一辆基本的汽车。然而,也有特殊的汽车

// Engines have power in addition to weight
public class Engine extends RailwayCar {
   private int power;

   public Engine(int weight, int power) {
      super(weight);
      setPower(power);
   }

   public void setPower(int power) {
      this.power = power;
   }

   public int getPower() {
      return power;
   }
}
还有其他类型的汽车。例如,可能有一辆客运汽车,乘客上下车时,每个车站的重量可能会发生变化。对于特定类型的货物,有特定类型的汽车。圆木车里会有很长的圆木

RailwayCar的所有这些子类都可以覆盖车站方法arriveAtStation和leaveStation,通过覆盖这些方法来执行特定操作


所有这些汽车都可以放在同一个列表或阵列中。例如,RailwayCar[]cars,或List cars=new ArrayList

快速回答您的问题:是的,几乎可以在超类的任何地方指定子类

原因包括继承和面向对象编程。让我给你举个例子。让我们想想火车和火车车厢,它们是火车的一部分

超类是轨道车。每辆火车都有重量

public class RailwayCar {
   private int weight;

   public RailwayCar() {
   }

   public RailwayCar(int weight) {
      setWeight(weight);
   }

   public int getWeight() {
      return weight;
   }

   public void setWeight(int weight) {
      this.weight = weight;
   }

   public void arriveAtStation(Station station) {}

   public void leaveStation(Station station) {}
}
那只是一辆基本的汽车。然而,也有特殊的汽车

// Engines have power in addition to weight
public class Engine extends RailwayCar {
   private int power;

   public Engine(int weight, int power) {
      super(weight);
      setPower(power);
   }

   public void setPower(int power) {
      this.power = power;
   }

   public int getPower() {
      return power;
   }
}
还有其他类型的汽车。例如,可能有一辆客运汽车,乘客上下车时,每个车站的重量可能会发生变化。对于特定类型的货物,有特定类型的汽车。圆木车里会有很长的圆木

RailwayCar的所有这些子类都可以覆盖车站方法arriveAtStation和leaveStation,通过覆盖这些方法来执行特定操作

所有这些汽车都可以放在同一个列表或阵列中。例如,RailwayCar[]cars,或List cars=new ArrayList