gpt4 book ai didi

java - 为什么子类类型的引用不能引用父类(super class)的对象?

转载 作者:行者123 更新时间:2023-12-01 07:01:53 25 4
gpt4 key购买 nike

您好,我无法理解为什么子类变量不能引用父类(super class)对象,如下代码所示。

class Superclass{
}

class Subclass extends Superclass{
}

public class DemoClass {

public static void main(String[] args) {

Superclass obj = new Subclass(); //Valid
Subclass obj2 = new Superclass(); //Invalid

}

}

最佳答案

因为 OOP 不是这样工作的。
具有子类类型的变量不能引用其父类(super class)的对象:

Subclass obj2 = new Superclass();

因为父类(super class)的任何实例都不一定是特定子类的实例。

但相反的情况也是可能的:

Superclass obj = new Subclass();

因为任何子类实例最终都是父类(super class)的实例。

要理解为什么不能执行第一个赋值(将父实例分配给用子类类型声明的变量),假设此代码有效:

Animal animal = new Dog(); 
Cat cat = animal; // should not be legal

您将 Dog 分配给 Cat 变量,因为 animal 变量引用 Dog 实例。这没有任何意义。

关于java - 为什么子类类型的引用不能引用父类(super class)的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44481640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com