Java-protected的使用范围
生活随笔
收集整理的這篇文章主要介紹了
Java-protected的使用范围
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
protected的使用范圍
類NewObject中有protected修飾的方法或者屬性,則:
同一個包中:
- 可在同一個包里的子類中實例化NewObject類獲得對象,然后可用該對象訪問protected修飾的方法或者屬性,即.操作訪問。
- 可在同一個包里的非子類中實例化NewObject類獲得對象,然后可用該對象訪問protected修飾的方法或者屬性。
- 可在同一個包里的非子類中實例化NewObject類的子類(該子類和NewObject類在同一個包中)獲得對象,然后可用該對象訪問protected修飾的方法或者屬性。
- 可在同一個包里的NewObject類的子類中調用NewObject類中protected修飾的方法或者屬性,即protected修飾的方法和屬性可被同一個包中的子類繼承。
非同一個包中:
- 可在非同一個包里的子類中實例化NewObject類獲得對象,但無法用該對象問protected修飾的方法或者屬性。
- 可在非同一個包里的非子類中實例化NewObject類獲得對象,但無法用該對象問protected修飾的方法或者屬性。
- 可在非同一個包里的非子類中實例化NewObject類的子類(該子類和NewObject類不在同一個包中)獲得對象,但無法用該對象問protected修飾的方法或者屬性。
- 可在非同一個包里的NewObject類的子類中調用NewObject類中protected修飾的方法或者屬性,即protected修飾的方法和屬性可被不同一個包中的子類繼承。
package 1:
BaseClass:
package package_1; // 相當于NewObject類 public class BaseClass {// protected方法protected void protectedMethod() {System.out.println("This is BaseClass");}}SubClass:
package package_1;public class SubClass extends BaseClass { }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:
SubClass:
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方法} }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方法不可以在不同一個包中的其它類中被訪問} }轉載于:https://www.cnblogs.com/Victor-Han/p/4861412.html
總結
以上是生活随笔為你收集整理的Java-protected的使用范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libtool: Version mis
- 下一篇: batch_size 和 fetch_s