public class Solution {
public static void main(String[] args) {
SiamCat simka = new SiamCat("Simka");
NakedCat nakedSimka = simka.shave();
}
public static class NakedCat { }
public static class NormalCat extends NakedCat {
public NormalCat() { }
public NormalCat(String name) {
System.out.println("My name is " + name);
}
public NakedCat shave() {
return this;
}
}
public static class SiamCat extends NormalCat {
public SiamCat(String name) {
super(name);
}
}
}
В классе NakedCat мы убрали явный конструктор потому, что там есть такой по умолчанию?
В классе NormalCat конструктор public NormalCat() { super();} - использовал бы параметры родительского класса?
А в варианте public NormalCat() {} - это конструктор по умолчанию, так зачем нам его явно прописывать???Андрей Михайлов
22 уровень
Поясните, пожалуйста
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Алексей Клоков
19 мая 2019, 16:11
По дефолту у класса есть конструктор без параметров, который вызывается при создании объектов. Как только ты его переопределяешь, он становится становится не действительным, т.е. ты уже не можешь создать объект с его помощью. Но если ты все же хочешь его использовать, то тебе надо преписать его для данного класса.
+3
Артем Divertitto Senior Android-разработчи в United Tech Master
20 мая 2019, 07:02
Не совсем так, если ты переопределяешь конструктор по умолчанию, то конструктор родителькоского класса так же вызывается неявным образом
0
Артем Divertitto Senior Android-разработчи в United Tech Master
20 мая 2019, 07:05полезный
Запусти код, многое прояснится
+3
Egor
6 февраля 2020, 17:53
Запустил, если в Solution убрать конструктор по умолчанию, конструктор Solution2 всё равно вызывается, т.к. при создании потомка вызываются конструкторы родителя по умолчанию. Соответственно вопрос, почему валидатор не пропустил решение, без конструктора, и его потребовал?
т.е. зачем строка 10?
0
Arthur
24 сентября 2021, 07:42
Чтобы можно было создать объект класса как с передаваемым параметром (String name) так и без него. Грубо говоря, мы оставили возможность создать бездомного кота (без клички)
0