このキーワードprotected
は、同じパッケージおよびサブクラス内のクラスへのアクセスを許可します ( http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html )。
現在、すべてのクラスはjava.lang.Object
スーパークラス ( http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html ) として持っています。
java.lang.Object
したがって、すべてのクラスがのメソッドにアクセスできると結論付けますprotected
。
次の例を見てください。
パブリック クラス テストクラス { public Object getOne() は CloneNotSupportedException をスローします { this.clone(); を返します。 } public Object getTwo() は CloneNotSupportedException をスローします { return ((オブジェクト) this).clone(); } }
正常にgetOne()
コンパイルされますgetTwo()
が、
Testclass.java:6: clone() は java.lang.Object でアクセスを保護しています return ((オブジェクト) this).clone();
がコンパイルされない理由も、( s メンバーgetTwo()
のアクセスに関して) との違いもわかりません。java.lang.Object
getOne()