gpt4 book ai didi

java - 继承Java父类(super class)和类型转换

转载 作者:行者123 更新时间:2023-12-02 04:08:06 27 4
gpt4 key购买 nike

我有两个 Java 类

Class A { void method1(){} }
Class B extends A { void method2(){} }

当我运行以下命令时,它工作正常:

Class C {
public static void main(String [] args){
A a1 = new A();
A a2 = new B();
B b1 = new B();
((B)a2).method2();
}
}

但为什么以下不起作用?

Class C {
public static void main(String [] args){
A a1 = new A();
A a2 = new B();
B b1 = new B();
(B)a2.method2();
}
}

谢谢

最佳答案

就像 Kabir 所说,在从另一个对象调用方法之前,您需要先转换对象。

这是因为 Java 将你的第二条语句读取为:(B) (a2.method2();)

因此java尝试在A对象a2中使用方法二,但它不能,因为该对象中没有method2()

但是,当您输入cast it(将(B)放在括号中的a2之前)时,它会读成这样:

(将a2转为B).method2();

运行良好,因为它将 a2 转换为 B,其中预先包含方法 2。

与数学概念进行简单比较,它就像计算值的运算顺序。您不会说 5 + 5 * 2 = 20,您会说 5 + 5 * 2 = 15,因为它首先计算 5 * 2 code>,然后添加 5

关于java - 继承Java父类(super class)和类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056910/

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