gpt4 book ai didi

java - 父类(super class)变量的子类引用?

转载 作者:行者123 更新时间:2023-11-29 04:50:56 24 4
gpt4 key购买 nike

当一个类扩展一个类时,我们可以在为子类对象分配内存的同时使用父类(super class)引用。到目前为止我的理解是这样做是可以的,因为子类继承了它父类的数据,但是它不能访问子类的成员,因为它只是引用,因此不知道添加了什么由子类完成。

我的问题是,当我将隐藏方法包含在上述概念中时,父类(super class)引用变量开始引用子类的函数。这是为什么 ?为什么它没有按预期调用自己的方法?

class A{
void show(){ System.out.print("CLass A. \n"); }
}

class B extends A{
void show(){System.out.print("Class B. \n"); }
}

class Main{
public static void main(String[] args){
A a= new A();
B b= new B();
a.show(); // prints Class A
b.show(); // prints Class B

A a1= new B();
a1.show(); // print Class B. why is this ? it should be Class A as per theory?
}
}

最佳答案

变量和方法是两个不同的东西。变量坚持它们的类型,因为方法根据提供的实现类型在运行时执行。

多态性。方法动态绑定(bind)并在运行时选择。如果您 ovveride 它们的实现类,它们将被执行,否则类型类的实现将被执行。

当你写的时候

 A a1= new B();

意思是请调用来自类型A的类B(在右侧)的实现

关于java - 父类(super class)变量的子类引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427920/

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