protected关键词

一、问题

​ 今天再使用Object类的clone方法发现一个问题,所有的类都继承自Object,Object中有的非private方法他的子类也应该有。在Object中有protected native Object clone() throws CloneNotSupportedException方法,该方法作用是浅clone一个对象。我自己创建了一个实现类public class Demo implements Cloneable,发现不能调用clone方法。

二、误区

访问权限 含义 本类 本包的类 非本包子类 非本包非子类
public 公共的
protected 保护访问权限
default 包访问权限
private 私有的
由于有其他语言的基础,对于访问权限关键字一直参考这张表,也受限于这张表,所以会出现这种问题。

三、案例

sdn上也看了一些答案,自己也做了一些小demo.

public class Demo{
    protected void demo(){
        System.out.println("i am demo");
    }
}


public class Demo2 extends Demo{

}


public class App {
    public static void main(String[] args) throws IOException, CloneNotSupportedException {
        Demo2 demo2 = new Demo2();
        demo2.demo();
    }
}

四、总结:

protect关键词修饰的方法,其子类可以调用,但是子类的实现类不能直接使用!

posted @ 2021-05-30 15:03  站在巨人肩上的人  阅读(66)  评论(0编辑  收藏  举报