protected修飾符總結

2021-06-27 21:16:49 字數 662 閱讀 1942

晚上敲**的時候,發現呼叫jtextfield的protected getcolumnwidth()方法報錯。

看來自己以前對protected的理解是錯誤的,於是測試一下。

寫乙個父類和兩個子類

public class a

}

public class b1 extends a

}

public class b2 extends a

public static void main(string args)

}

寫乙個測試類

public class test 

}

b1與a放在同乙個包中。三條語句都可以正常編譯執行

b2放在另乙個包。只能呼叫自己的a方法。其他兩條語句無法通過編譯

當測試類與a在同乙個包中時,三條語句都可以正常編譯執行。

當測試類與a不在同乙個包中時,三條語句均無法通過編譯。 

以上測試說明只要與父類在同乙個包中,則可以呼叫父類和任意子類的該protected方法。

如果與父類不同同一包中,則只有子類可以呼叫自己所繼承的protected方法,其他情況均無法呼叫。

訪問修飾符protected

protected修飾符的確讓我有點困惑。例如 object的clone 方法就是protected修飾的。發現,有的時候可以訪問,但很多時候根本訪問不到。一 下面就以clone 方法為例 我在superclass類中,不重寫clone 只是訪問。如下 package cn public class...

繼承和Protected修飾符(C )

繼承 1.基類中受保護成員只能從基類及其派生類中訪問 2.例項化派生類時,會首先呼叫基類的構造器,避免遺忘對基類的構造器 3.基類如果沒有可訪問的構造器,編譯器就不清楚如何構造基類,進而報錯 4.避免出現這個問題,在派生類構造器的頭部要顯式指定要執行哪乙個基類構造器 看下面例子 public sea...

C 的protected訪問修飾符

概述 設a為父類,b為繼承a的子類 在a中被protected修飾的成員 1 在a中可以訪問 2 在b中可以直接訪問 3 在b中通過b的例項訪問 4 在a和b的外部類無法訪問 總結 基類中訪問無限制 子類中直接訪問或通過子類例項訪問 示例 using system namespace testpro...