gpt4 book ai didi

Java类继承,子类可以访问私有(private)字段,为什么?

转载 作者:行者123 更新时间:2023-11-30 05:57:52 32 4
gpt4 key购买 nike

我的代码非常类似于以下内容。

package my.pkg;

public abstract class X {
private CapableField field;

public abstract void doSomething();

public X(CapableField fieldValue) {
this.field = fieldValue;
}
}

还有:

package my.pkg.sub;

public class Y extends my.pkg.X {
public void doSomething() {
this.field.doSomething();
}
}

为什么这在 Java 中是合法的代码?我认为“私有(private)”意味着该字段不能在子类中直接访问,这是类继承的一个相当基本的原则。让 X 具体化而不是抽象化不会改变任何事情。

如果我特别希望某个字段或成员函数只能在定义它的类中访问,而不是在定义类的某个随机子类中访问,我该怎么办?

最佳答案

这不是真的。您很可能实际上将 Y 定义为 inner class 。这样外部类的私有(private)字段确实是可见的。

关于Java类继承,子类可以访问私有(private)字段,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5065053/

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