gpt4 book ai didi

java - 为什么 protected 范围不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:08:52 24 4
gpt4 key购买 nike

我正在尝试使用 Java 的 protected 范围进行练习。

我在 package1 中有一个基类:

package package1;

public class Base {

protected String messageFromBase = "Hello World";

protected void display(){
System.out.println("Base Display");
}

}

我在同一个包中有一个 Neighbor 类:

package package1;

public class Neighbour {

public static void main(String[] args) {
Base b = new Base();
b.display();
}
}

然后我在另一个包中有一个子类,它继承自 package1 的 Base:

package package2;

import package1.Base;

class Child extends Base {


public static void main(String[] args) {
Base base1 = new Base();
base1.display(); // invisible
System.out.println(" this is not getting printed" + base1.messageFromBase); // invisible

}


}

我的问题是 display() 方法没有从子实例中调用。此外,base1.messageFromBase 是不可访问的,尽管它们被声明为 protected 。

最佳答案

注意一些关于protected访问的事情

-They are available in the package using object of class
-They are available outside the package only through inheritance
-You cannot create object of a class and call the `protected` method outside package on it

它们只能通过包外的继承来调用。你不必创建基类的对象然后调用,你可以简单地调用 display()

class Child extends Base {
public static void main(String[] args) {
Child child = new Child();
child.display();
}
}

专家 Makoto 在他提供的答案中提供了官方文档的链接。

关于java - 为什么 protected 范围不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888773/

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