При переопределении метода clone(), зачем вам объявлять его открытым?

В книге по Java, которую я читаю, учебная программа берет защищенный метод clone() в классе Object и переопределяет его. Когда они делают это, они расширяют модификатор видимости на public, чтобы его можно было использовать в любом пакете. Я запутался, почему это должно быть сделано, хотя. Если по определению все является подклассом Object, и метод объявлен защищенным в классе Object. Не означает ли это, что каждый класс будет иметь к нему доступ. Зачем нужно делать метод общедоступным при его переопределении? Я не совсем понимаю.

1 ответ

Вам нужно переопределить это как общедоступное, потому что вы можете назвать его из третьего класса. Давайте предположим, что у вас есть Base класс, который имеет подкласс Child это переопределяет метод клонирования. Теперь у меня может быть третий класс, как показано ниже.

public class Third {
  public void m1(Child c) {
     Child d = c.clone();
  }
}

Здесь класс Third вызывает метод clone, поэтому для вызова его необходимо объявить открытым.

Другие вопросы по тегам