gpt4 book ai didi

java - 访问子类中的私有(private)实例

转载 作者:行者123 更新时间:2023-12-02 04:59:52 25 4
gpt4 key购买 nike

我已经在 Stack Overflow 上看到了与我的问题相关的答案,但我仍然有一些不明确的地方。父类方法可以访问其自己的私有(private)实例变量。如果子类继承该类,那么在 Child 类的实例上调用 getA() 方法时会发生什么?它是从 Parent 类返回 a 还是从 Child 类返回 a

class Parent {
private int a = 10;
public int getA() {
return a;
}
}

class Child extends Parent {
private int a = 22;
}

public class Test {
public static void main(String []args) throws Exception {
Child c = new Child();
System.out.println(c.getA());
}
}

最佳答案

作为方法getA()是继承的,如果您调用此方法,您将始终调用 Parent的方法。

当前对象将被视为 Parent而不是 Child ,以及Parent的 a 将被返回。

即使你有自己的变量 a ,此变量不会覆盖 Parenta 。它们彼此不同,具有不同的地址和不同的值。

如果你想要getA()返回Childa ,您需要重写该方法以返回新变量。

class Child extends Parent {
private int a = 22;

@Override
public int getA(){
return a;
}
}

您也可以“发疯”并执行以下操作:

class Child extends Parent {
private int a = 22;

@Override
public int getA(){
int superA = super.getA();

return a+superA;
}
}

这样你就可以返回 Parent 的总和的和Childa .

(只是一个例子)

关于java - 访问子类中的私有(private)实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29383984/

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