TestClass.clone (). Чтобы это работало, вы должны иметь доступ на уровне пакета к объекту, который у вас нет, и, следовательно, к ошибке.

вое слово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 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с членами) сgetOne().

Ответы на вопрос(0)

Ваш ответ на вопрос