Thi*_*ker 3 java inheritance protected subclass
我正在阅读Java中的protected modifier,哪些字段可以在同一个包和子类中访问.
现在我写了一些代码.
package com;
public class Parent {
protected void print()
{
System.out.println("dFDF");
}
}
Run Code Online (Sandbox Code Playgroud)
现在是子类.
package abstraact.concept;
import com.Parent;
public class BaseParent extends Parent{
public void printNum()
{
Parent p = new Parent();
p.print(); /** Getting error here */
// The method print() from the type Parent is not visible
}
public static void main(String[] args) {
BaseParent pp = new BaseParent();
pp.printNum();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我收到错误?因为受保护的方法/变量可以从子类访问.
这是一个常见的"悖论" Java
,根本就没有悖论.简单地说,由于语言的安全性(可见性)规则,人们无法通过另一个包中的对象引用访问受保护的方法.
声明新对象后,它具有(或允许)的可见性由代码所属的包控制,而不是由继承层次结构控制.
调用
super.print();
Run Code Online (Sandbox Code Playgroud)
要么
this.print();
Run Code Online (Sandbox Code Playgroud)
将工作.
归档时间: |
|
查看次数: |
1857 次 |
最近记录: |