このキーワード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.ObjectgetOne()