protect是java中的權限關鍵字,一般是指定使用的範圍。
protected:
#父類別的被protected修飾的類別成員包內可見,並且對其子類別可見。
父類別與子類別不在同一個套件裡,子類別只可以存取從父類別繼承的protected成員,不能存取父類別實例化的成員。
我們可以透過以下幾個關於protected方法可見性的例子來進一步掌握protected關鍵字。在碰到涉及protected成員的呼叫時,首先要確定出該protected成員來自何方,其可見性範圍是什麼,然後就可以判斷出當前用法是否可行了
例子:
//示例一 package p1; public class Father1 { protected void f() {} // 父类Father1中的protected方法 } package p1; public class Son1 extends Father1 {} package p11; public class Son11 extends Father1{} package p1; public class Test1 { public static void main(String[] args) { Son1 son1 = new Son1(); son1.f(); // Compile OK ----(1) son1.clone(); // Compile Error ----(2) Son11 son = new Son11(); son11.f(); // Compile OK ----(3) son11.clone(); // Compile Error ----(4) } }
對於上面的範例,首先看(1)(3),其中的f()方法從類別Father1繼承而來,其可見性是包p1及其子類別Son1和Son11,而由於呼叫f()方法的類別Test1所在的套件也是p1,因此(1)(3)處編譯通過。其次看(2)(4),其中的clone()方法的可見性是java.lang套件及其所有子類,對於語句“son1.clone();”和“son11.clone();”,二者的clone()在類別Son1、Son11中是可見的,但對Test1是不可見的,因此(1)(3)處編譯不通過。
總結
protected是最難理解的一種Java類別成員存取權修飾詞。在程式設計中,碰到涉及protected的呼叫時,首先要確定出該protected成員來自何方,其可見性範圍是什麼,然後就正確無誤的使用了。
以上是java中protect是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!