gpt4 book ai didi

java - 为什么另一个包中的子类无法访问 protected 方法?

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:18 25 4
gpt4 key购买 nike

我在两个不同的包中有两个类:

package package1;

public class Class1 {
public void tryMePublic() {
}

protected void tryMeProtected() {
}
}


package package2;

import package1.Class1;

public class Class2 extends Class1 {
doNow() {
Class1 c = new Class1();
c.tryMeProtected(); // ERROR: tryMeProtected() has protected access in Class1
tryMeProtected(); // No error
}
}

我能理解为什么调用tryMeProtected()没有报错了自 Class2看到此方法,因为它继承自 Class1 .

但为什么 Class2 的对象不可能呢?在 Class1 的对象上访问此方法使用 c.tryMeProtected();

最佳答案

protected 方法只能通过包外子类的继承访问。因此第二种方法 tryMeProtected(); 有效。

下面的代码不会编译,因为我们没有调用 protected 方法的继承版本。

 Class1 c = new Class1();
c.tryMeProtected(); // ERROR: tryMeProtected() has protected access in Class1

关注这个stackoverflow更多解释的链接。

关于java - 为什么另一个包中的子类无法访问 protected 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19949327/

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