关于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

posted @ 2020-12-18 17:16  TIME_小白  阅读(700)  评论(0)    收藏  举报