對protected一直比較迷惑,最近又遇到類似問題,仔細研究了一下才搞懂。。先大致說下 有空再貼上**幫助理解
首先問題**是 在父類中定義了乙個protected許可權的方法f() 然後子類中 new了乙個父類物件,這時候用父類物件呼叫f() 卻發現無法呼叫!(子類與父類不在同乙個包下)
原因:protected許可權的定義是 繼承父類的子類可以呼叫這個方法 意思是只有滿足這個條件的類------繼承了父類的子類 才能訪問這個方法f() 而父類不是子類(這句話好好理解一下) 所以說父類無法訪問protected許可權的方法 protected 和 public private 一樣都是一種許可權 沒有特殊性 它的許可權就是 只有子類可以訪問。
而如果把父類子類放在同乙個包下 那麼父類可以訪問f() 這是因為在同乙個包下首先有包訪問許可權 可以理解為這時的protected 有包訪問性。
第一次寫部落格,不足之處請見諒。大家共同討論共同進步。
Swift中的訪問控制和protected
原文再續,書折第一回。很多其他程式語言都有一種 protected 設定,可以限制某些類方法只能被它的子類所使用。swift支援了訪問控制後,大家給我們的反饋都很不錯。而有的開發者問我們 為什麼swift沒有類似protected的選項?當我們在設計swift訪問控制的不同等級時,我們認為有兩種主要...
Java中關於遞迴演算法
首先演示乙個遞迴 public class testrecursion public static void main string args 乙個簡單的遞迴 乙個方法呼叫其本身方法 當然此程式執行有異常,只是說明遞迴原理 改善程式 public class testrecursion else p...
關於Java中Synchronized互斥範圍小結
synchronized的使用比較簡單,就是對 進行同步。但是昨天在看書的時候發現了乙個比較困惑的地方,就是類和例項物件之間的同步。有以下幾種情況 1.靜態方法間的同步即對類物件進行同步,執行緒對test1和test2方法的訪問是互斥的 static synchronized void test1 ...