gpt4 book ai didi

java - 用子类对象的父类(super class)引用覆盖

转载 作者:行者123 更新时间:2023-11-29 07:08:46 24 4
gpt4 key购买 nike

我最近一直在翻阅几本书以自学 Java,幸运的是,主要是由于运气,遇到的困难很少。这刚刚发生了变化。

我在继承和整个父类(super class)子类设置下阅读了以下部分

-- 当创建一个新的父类(super class)对象时,像所有对象一样,它被分配一个引用(本例中为 superReference)

-- 如果创建了一个新的子类对象(具有扩展父类(super class)的定义子类),然后将 superReference 引用设置为引用该对象而不是原始对象,我的理解是,因为进行了引用对于父类(super class),只有父类(super class)定义的成员可以从子类访问。

首先 - 这是正确的吗?

第二:如果我重写了一个方法,因此在父类(super class)中有一个方法,在子类中有一个方法,我创建了一个父类(super class)对象,然后按照称为像 Dynamic Method Dispatch 这样的东西,被调用的重写方法应该默认访问子类方法吗?

好吧,我的问题是:

如果对父类(super class)对象的引用被重组为子类对象,并且将拒绝 object.member 直接访问子类定义的成员,仅支持父类(super class)定义的成员,如果父类(super class)引用被重组为子类对象,如果访问受父类(super class)起源引用限制,则重写方法适用于子类对象

最佳答案

如果你这样尝试:

class SuperClass{
int intVar = 0;
void method(){
//in super class
}
}
class SubClass extends SuperClass{
int intVar = 2;
void method(){
//in sub class
}
}

然后

SuperClass obj = new SubClass();
int val = obj.intVar;// this is taken from SuperClass as variables are decided on reference basis
//if both superclass and subclass contain the same variable it is called shadowing
obj.method();// it is taken from the SubClass as it is method overriding
//and is decided at runtime based on the object not the reference

查看评论。希望这会有所帮助。

关于java - 用子类对象的父类(super class)引用覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514370/

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