При переопределении метода clone (), зачем вам объявлять его открытым? - PullRequest
0 голосов
/ 12 февраля 2019

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

1 Ответ

0 голосов
/ 12 февраля 2019

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

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

Здесь, класс Third вызывает метод клона, поэтому он должен быть объявлен как public.

...