我正在尝试使用Java的受保护范围.
我在package1中有一个Base类:
package package1;
public class Base {
protected String messageFromBase = "Hello World";
protected void display(){
System.out.println("Base Display");
}
}
Run Code Online (Sandbox Code Playgroud)
我在同一个包中有一个Neighbor类:
package package1;
public class Neighbour {
public static void main(String[] args) {
Base b = new Base();
b.display();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在另一个包中有一个子类,它从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
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是该display()方法不是从子实例调用的.此外,base1.messageFromBase虽然它们被声明为受保护,但是无法访问.
注意一些关于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
Run Code Online (Sandbox Code Playgroud)
它们只能通过包外继承来调用.您不必创建基类对象然后调用,您只需调用即可display()
class Child extends Base {
public static void main(String[] args) {
Child child = new Child();
child.display();
}
}
Run Code Online (Sandbox Code Playgroud)
Makoto专家在他提供的答案中提供了正式文件的链接.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |