java中protect属性用法总结

pojo类:

package com.lky.h1;

public class Base {

    private Integer id;
    protected String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Base [id=" + id + ", name=" + name + "]";
    }

    
    
}

test1类:

package com.lky.h1;

import org.junit.Test;

/**
* @ClassName: test1
* @Description: 同一个包内测试protect属性
* @author Administrator
* @date 2015年10月13日
*
 */

public class test1 extends Base{

    /**
    * @Title: testBase
    * @Description: 父类本身的访问
     */
    @Test
    public void testBase(){
        Base base=new Base();
        base.setId(10);
//        base.id=9; 同一个包内private属性不能直接访问
        base.name="lky";//同一个包内protect属性可以直接访问
        System.out.println(base);
    }
    
    /**
    * @Title: testExends
    * @Description:  子类的访问 
     */
    @Test
    public  void testExends(){
        test1 a=new test1();
        a.name="lky";//protect属性在子类中可见,可以直接访问
        a.setId(10);//private属性在子类中不可见,不能直接访问
        System.out.println(a);
    }
}

test2类

package com.lky.h2;

import org.junit.Test;

import com.lky.h1.Base;

public class test2 extends Base {
    @Test
    public void testBase() {
        Base base = new Base();
        // base.name="lky";不能直接访问
        // base.id=10; 不能直接访问
        base.setName("lky");
        base.setId(10);
        System.out.println(base);
    }

    @Test
    public void testExends() {
        test2 a = new test2();
        a.name = "lgh"; //可以直接访问
//        a.id = 10;    //不能访问
        a.setId(10);
        System.out.println(a);
    }

}

总结:假设有类A和类B,且A类中有一个值属性为protect

  1. 若A和B在同一个包下:在B类中是可以通过A直接访问A中的protect属性,实验如test1的testBase
  2. 若A和B在同一个包下,并且B继承于A:在B类中也是可以直接访问A中的protect属性,实验如test1的testExtends
  3. 若A和B不在同一个包下:在B类中是不可以通过A来访问A中的protect属性,即该属性在B类中不可见,实验如test2中testBase
  4. 若A和B不在同一个包下,并其B继承于A:在B类中是可以访问到A中的protect属性,实验如test2的testExtends
出处: http://www.cnblogs.com/dmir/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值