为什么在用作其他对象类型时必须转换类型为object的引用变量

尽管Java中的所有类都是Object类的子类,但是与其他对象类型不同,但是如果没有强制类型转换,则不能将Object类型的引用变量分配给任何其他引用类型。

例如:

public class Inheritance {

public static class Animal {

public void Scream() {

System.out.println("I'm an animal");

}

}

public static class Mammal extends Animal{

public void Scream(){

System.out.println("I'm a mammal");

}

}

public static class Tiger extends Mammal{

public void Scream(){

System.out.println("I'm a tiger");

}

}

public static void main (String[] args){

Animal tiger = new Tiger();

tiger.Scream(); //true

Object tiger = new Tiger();

tiger.Scream(); //false

Object tiger = new Tiger();

((Animal) tiger).Scream(); //true

}

}

回答:

您想知道为什么我们使用显式类型转换。这就是关于继承的一切-

让我来清除此-让我们有两个类 和 。和 是子类的 。这意味着 具有

所有功能,这意味着 可以做 可以做的任何事情。因此,如果

 A a = new B();

是完全没有问题,因为 可以做什么 可以做。这里的引用变量 是Class A类型的,从中可以调用Class

A的所有方法。现在 Object (new B();)具有 所有功能(作为继承),因此

所有方法将可以调用。

如果我们像这样逆转条件->

      B b =new A();

不可能,因为可能是 实现了自己的功能(方法和变量),而这些功能不在 。但是这里引用变量是 类型的,所以

所有功能都是可以调用的,但是实际对象是 类型 因此会发生错误。

情况与此相同,因为所有其他Class自动继承 Class。

因此,当具有引用变量类型为Class Object的任何对象都需要显式Cast时,因为不能确定该对象包含多少功能。

以上是 为什么在用作其他对象类型时必须转换类型为object的引用变量 的全部内容, 来源链接: utcz.com/qa/410056.html

回到顶部