關鍵字protected
授予訪問同一包和子類中的類的權限(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)。如何保護java.lang.Object的受保護方法免受子類攻擊?
現在,每個班級都有java.lang.Object
作爲超類(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。
因此,我得出結論,即使他們是protected
,每個班級都可以訪問java.lang.Object
的方法。
看看下面的例子:
public class Testclass { public Object getOne() throws CloneNotSupportedException { return this.clone(); } public Object getTwo() throws CloneNotSupportedException { return ((Object) this).clone(); } }
雖然getOne()
編譯罰款,getTwo()
給
Testclass.java:6: clone() has protected access in java.lang.Object return ((Object) this).clone();
我也不明白爲什麼getTwo()
沒有編制,也沒有什麼區別(關於訪問java.lang.Object
s會員)與getOne()
。
很難相信當我看着`Clonable`和`Object.clone()`時,我有完全相同的困惑 - 謝謝。 – wulfgarpro 2011-10-14 02:05:34