private,defualt,protected,public之间的区别

private,defualt,protected,public这四个都是修饰java成员的访问权限的。那么大家会被问到,也会被面试到,今天在研究Object.clone()方法时,也遇到了这样的问题,所以我打算整理一下。

 同一类下同一包下非包下的子类关系不同包下的非子类
private   
defualt  
protected 
public

因为Object.clone()方法是protected是修饰的,所以今天主要对protected视角进行测试,如果有幸有人看了这篇文章,可以根据下面的例子联想到defualt等。

protected

         新建一个表Animal,

        属性为有

        private  String  type;

        public  Integer  age;

        方法有

        protected void  fly(){};

        public void  jiao(){};

        1、同一类下:

             在本类中添加一个main()方法,Animal animal=new Animal();

             可以获取到animal.type,animal.age,animal.fly(),animal.jiao();

             注:可以获取到protected属性和private属性。

        2、同一包下:

              在同一包下新建一个“Orea“类。

              在当前类中添加一个main()方法,Animal animal=new Animal();

              可以获取到animal.age,animal.fly(),animal.jiao();

              注:可以获取到protected属性。

        3、非同一包下的子类关系(“非同一包下”指的是不在同一个包下,可以理解为之前的路径只要有不相同就不再一个包下,包含关系也不行)

           新建一个类ChildAni继承Animal

           在main()方法中新建Animal对象,可以获取到animal.age,animal.jiao();        

           注:不可以获取到protected属性(这个就相当于非包下,Animal并不是Animal的子类,所以不能获取到)。

           在main方法中新建ChildAni对象,可以获取childAni.age,childAni.jiao();childAnianimal.fly();

           注:可以获取到protected属性

        4、在非包下的非子类关系

                 新建一个类ChildAni

                 在main()方法中新建Animal对象,可以获取到animal.age,animal.jiao();

            注:不可以获取到protected属性

             

 

 

转载于:https://my.oschina.net/WEguo/blog/1539459

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值