訪問修飾符相關注意點(protected子類友好)

注意:protected表示只有在子類和同包中能夠訪問。java

         須要注意的是,在其餘包中,如果建立了父類的對象,可是父類對象訪問不了本身類裏面用protected修飾的屬性,只能由子類訪問父類的protected修飾的屬性,切記!ide

         而在本類本包中,則能夠訪問protected修飾的屬性!(這個結論不對,下面的是對的!)測試

 

 

package 1:this

  1. BaseClass:code

    package package_1;
    // 至關於NewObject類
    public class BaseClass {
        // protected方法
        protected void protectedMethod() {
            System.out.println("This is BaseClass");
        }
     
    }  
  2. SubClass:對象

    package package_1;
     
    public class SubClass extends BaseClass {
    }  
  3. MainClass:繼承

    package package_1;
     
    public class MainClass {
        public static void main(String[] args) {
            BaseClass b1 = new BaseClass();
            SubClass s1 = new SubClass();
            b1.protectedMethod(); // 父類的protected方法可在同一個包中的其它類中被訪問
            s1.protectedMethod(); // 子類中繼承了父類的protected方法
        }
    }

package 2:編譯器

  1. SubClass:it

    package package_2;
     
    import package_1.BaseClass;
    // 繼承了不在同一個包中的父類 BaseClass
    public class SubClass extends BaseClass {
        public void testMesthod(){
            BaseClass b1 = new BaseClass();
            b1.protectedMethod(); // 編譯器報錯。父類的protected方法不能夠在不一樣一個包中的子類中被訪問
            this.protectedMethod(); // 子類繼承了父類protected方法
        }
    }
    

      

  2. MainClass:編譯

    package package_2;
     
    import package_1.*;
     
    public class MainClass {
        public static void main(String[] args) {
            BaseClass b1 = new BaseClass();
            b1.protectedMethod(); // 編譯器報錯。父類的protected方法不能夠在不一樣一個包中的其它類中被訪問
            SubClass s1 = new SubClass();
            s1.protectedMethod(); // 編譯器報錯。子類的protected方法不能夠在不一樣一個包中的其它類中被訪問
        }
    }
    

      

    protected修飾的屬性或方法,只在子類裏面友好,若不在子類裏面,而是在其餘包的測試類中,建立的子類對象,是訪問不了protected修飾的屬性或方法;只有在其餘包建立了子類,子類裏面才能使用protected修飾的屬性或方法!

相關文章
相關標籤/搜索