gpt4 book ai didi

java - 通过强制转换调用 Animal 类的 methodS

转载 作者:行者123 更新时间:2023-12-01 06:44:55 26 4
gpt4 key购买 nike

我是Java初学者,所以请有人告诉我如何通过哺乳动物对象调用Animal中的methodA()。我无法清楚地理解为什么我们需要向下转型和向上转型。

class Animal{
void methodA(){
System.out.println("I m Animal");
}
}
class Mammal extends Animal{
void methodA(){
System.out.println("I m Mammal child class of Animal");
}
void methodAB(){
System.out.println("Two child class Dog and Cat I have");
}
}

public class UpDownCast {

public static void main(String[] args) {

Animal a = new Animal();
a.methodA();

Mammal m = new Mammal();
m.methodA();


Animal A = new Mammal();
if (A instanceof Mammal){
A.methodA();
}
Animal A1= new Animal();
Mammal M1 =(Mammal)A1;
M1.methodA();

}
}

提前致谢。

最佳答案

如果您的实例是 Mammal 并且您正在调用 methodA()(在 Mammal覆盖) ),java会调用MammalmethodA()。这称为Dynamic Polymorphism

要从 Mammal 类调用 AnimalmethodA(),您需要使用 super 关键字调用它,在 Mammal 类中,如下所示

class Mammal extends Animal{
void methodA(){
super.methodA();// --> calling Animal's methodA()
}
void methodAB(){
System.out.println("Two child class Dog and Cat I have");
}
}

此外,下面的语句将导致 ClassCastException as Animal IS NOT A 哺乳动物(作为哺乳动物 IS A 动物)

Animal A1= new Animal();
Mammal M1 =(Mammal)A1;
M1.methodA();

关于java - 通过强制转换调用 Animal 类的 methodS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17562958/

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