关于protected关键字的详细解释
很多介绍java语言的书籍都对protected关键字介绍的比较简单,被protected修饰的成员对于本包和其子类可见。但这种说法太过于含糊。其实,protected的可见性有两点:
l 基类的protected成员是包内可见的,并且对子类可见;
l 若子类与基类不在同一个包中,那么类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
下面通过两个例子给大家解释一遍。我们知道,Object类是所有类的父类,Object类中有一个clone()方法被protected修饰,接下来我们创建两个类,用被protected修饰的clone()方法举例
实例1:
将Demo2实例化后在Demo类里调用
package question;
public class Demo implements Cloneable{
public static void main(String[] args) {
Demo2 d = new Demo2();
d.clone();
}
}
class Demo2 implements Cloneable{
public static void demo2() throws CloneNotSupportedException {
Demo2 d = new Demo2();
d.clone();
}
}
此时,在Demo类里用Demo2的实例调用clone()会出现方法不可见错误,而在Demo2类中的Demo2实例可以调用clone()方法
实例二:
1、
package question;
public class Demo implements Cloneable {
public static void main(String[] args) throws CloneNotSupportedException {
Demo demo = new Demo();
demo.clone();
}
}
可以调到本类中继承父类的clone()方法
2、
package question;
public class Demo implements Cloneable {
public static void main(String[] args) throws CloneNotSupportedException {
Object o = new Object();
o.clone();
}
}
此时会出现clone()方法不可见错误,也就是说调不到父类的方法
本篇文档为简化版。更多详细内容,也可以点击以下链接查看
https://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html

浙公网安备 33010602011771号