При переопределении метода clone(), зачем вам объявлять его открытым?
В книге по Java, которую я читаю, учебная программа берет защищенный метод clone() в классе Object и переопределяет его. Когда они делают это, они расширяют модификатор видимости на public, чтобы его можно было использовать в любом пакете. Я запутался, почему это должно быть сделано, хотя. Если по определению все является подклассом Object, и метод объявлен защищенным в классе Object. Не означает ли это, что каждый класс будет иметь к нему доступ. Зачем нужно делать метод общедоступным при его переопределении? Я не совсем понимаю.
1 ответ
Вам нужно переопределить это как общедоступное, потому что вы можете назвать его из третьего класса. Давайте предположим, что у вас есть Base
класс, который имеет подкласс Child
это переопределяет метод клонирования. Теперь у меня может быть третий класс, как показано ниже.
public class Third {
public void m1(Child c) {
Child d = c.clone();
}
}
Здесь класс Third вызывает метод clone, поэтому для вызова его необходимо объявить открытым.