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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM