• 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
  • 相关阅读:
    将一个正整数分解质因数
    C语言中字符数组和字符串、字符串常量(转载)
    输出那一天是星期几
    吸血鬼数字—THINKING IN JAVA中一道习题
    Oracle外连接,左外连接,右外连接,内连接简析
    函数基础篇 Zeus
    程序员从初级到中级10个秘诀
    帮你免于失业的十大软件技术
    入门级XML学习(二)
    入门级XML学习(一)
  • 原文地址:https://www.cnblogs.com/dmir/p/4876038.html
Copyright © 2020-2023  润新知