¿Cómo se protegen los métodos protegidos de java.lang.Object de las subclases?

La palabra claveprotected concede acceso a clases en el mismo paquete y subclases (http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)

Ahora, cada clase tienejava.lang.Object como superclase (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)

Por lo tanto, concluyo que cada clase puede accederjava.lang.Objectmétodos incluso si sonprotected.

Eche un vistazo al siguiente ejemplo:

public class Testclass {
  public Object getOne() throws CloneNotSupportedException {
    return this.clone();
  }
  public Object getTwo() throws CloneNotSupportedException {
    return ((Object) this).clone();
  }
}

MientrasgetOne() compila biengetTwo() da

Testclass.java:6: clone() has protected access in java.lang.Object
        return ((Object) this).clone();

Tampoco entiendo por quégetTwo() no compila ni cuál es la diferencia (con respecto al acceso dejava.lang.Objects miembros) congetOne().

Respuestas a la pregunta(3)

Su respuesta a la pregunta