В этой задаче нам предстоит создать класс Solution и его потомка SubSolution, а для этого потомка — создать конструкторы и исправить их модификаторы доступа так, чтобы получить три конструктора с разными модификаторами (кроме private).
Перегрузка конструкторов
- 8
Недоступна
Комментарии (73)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Valery Gr
24 марта, 20:11
Вопросы.
А что получается конструкторы самостоятельно не наследуются от Solution классом SubSolution?
Почему нам необходимо снова писать три конструктора в классе SubSolution, если изначально созданные конструкторы в Solution уже имеют реализацию?
Есть пояснительная бригада?
0
Ilya Capercaillie
6 мая, 18:24
конструктор не метод.
+1
Kidchai
27 июня, 18:48
Родительский конструктор наследуется классом-наследником. И вызывается при создании экземпляра класса-наследника. Вот порядок инициализации в классе:
1. Статические поля и статические блоки класса-родителя
2. Статические поля и статические блоки текущего класса
3. Нестатические поля и блоки класса-родителя
4. Конструктор родителя
5. Нестатические поля и блоки текущего класса
6. Конструктор текущего класса
Пункты 3-6 выполняются только и при каждом создании экземпляра
В классе SubSolution их можно было бы не писать, если бы мы хотели оперировать только конструкторами родительского класса. Но здесь мы решаем прописать и конструкторы класса-наследника. И во время создания экземпляра SubSolution сначала вызовется конструктор Solution, а потом конструктор SubSolution.
Попробуйте в Solution написать как-то так:
А в SubSolution так:
Потом создайте отдельный класс, в нём создайте экземпляр SubSolution, и вы увидите, в каком порядке инициализируются конструкторы. 0
Sergey Kornilov
1 ноября 2021, 06:03
Подсказка : создавай конструкторы с разными типами параметров.
Всего эту задачу решили 29654 учеников.
+4
Даниил Александрович
27 января 2021, 15:57
Нажмите alt+Insert , но в телефоне такого нет пришлось импровизировать.
написал конструкторы запихнул туда вызов super с параметром.
результат звёздная пыль с 2х попыток.
0
Игорь ветеран в Армия России
2 августа 2021, 12:57
восхищаюсь вашим упорством. На таком уровне решать задачи с телефона - это мощно. Я примерно уровне на 5-6 понял, что мне не хватит нервов на это и начал решать задачи только на компе...
+2
Spectre Разливайка в Розливуха
7 августа 2021, 17:50
Так и не смог на айфоне через браузер создать класс в новом файле (
0
БелК в труселях
15 ноября 2021, 12:13
Я вообще где-то на исключениях без телефона начал решать потому что в условии задачи только с ИДЕА. А вообще там есть куча подсказок (кто решал задачи по времени поймет) и нет компьютера, а телефон всегда рядом.
0
Максим
16 января 2021, 13:46
Кроме того, что прямо требуется в задании, сами создавайте экземпляры класса Solution и SubSolution и смотрите, что будет происходить. Можно в каждый конкструктор каждого класса доставить команду вывода какого-то текста в консоль (System.out.println(...)) и явно увидеть, что, например, при создании экземпляра класса SubSolution будет сначала вызываться конструктор родительского класса. Также есть у классе SubSolution создать конструктор с доступом private, то вызвать его не удастся. Еще один вывод - это то, что модификаторы доступа не являются частью сигнатуры метода. В сигнатуру метода входит только название метода, типа принимаемых параметров и их последовательность. Всё прочее (модификатор доступа, типа возвращаемого значения) в сигнатуру метода не входит, соответственно в одном классе не может быть, например, двух конструкторов с одинаковыми принимаемыми параметрами и с разными модификаторами доступа. Следующий код приведет к ошибке:
А такой код работать будет:
+4
🦔 Виктор веду учебный тг-канал в t.me/Javangelion Expert
12 января 2021, 03:12
1. Создаём четыре конструктора с разными модификаторами доступа: приватный, публичный, защищённый и пакетный (по умолчанию).
2. Чтобы перегрузить конструкторы, нужно задать им разные параметры (один конструктор без параметров (по умолчанию) тоже считается).
3. В отдельном классе по Alt + Insert реализовываем уже три конструктора (меняя публичные модификаторы, которые генерирует IDEA), потому что приватный переопределить нельзя.
4. Всё получится!
+16
дмитрий кузьмин Java Developer в openCBS
7 октября 2020, 06:52
В очередной раз из-за невнимательности и какой то не нужнй спешки решил только с третьего раза😔
0
Георгий Лисок
4 января 2021, 16:42
такая же беда)
0
Виталий
9 сентября 2020, 05:25
Напоминание ,всего 4 модификатора:
public - так и пишется
private-так и пишется
protected-так и пишется
"ничего"- остается пустым, то есть сразу название конструктора,например Solution(String s,int n) ,но модификатор условно есть,просто его не видно.
в классе наследнике наследуются все конструкторы,кроме конструктора с модификатором private. Так как к модификатору private можно обращаться только внутри класса,где он объявлен.
+7
Максим Дудин
20 ноября 2020, 14:39
Спасибо добрый человек.... твой здорово коммент помог
0
НямкаExpert
4 июня 2020, 11:35
И какие, собственно, мысли должны быть после этой задачи.
+5
Alexander Chevtaev
8 июня 2020, 05:55
Только одна
"зачем я это делал?"
+5
Alex
9 июня 2020, 10:01
приватный конструктор
private Solution(double d) {
}
не будет наследоваться и к нему нельзя обратиться из класса SubSolution - вот что эта задача должна донести до нас
+23
Mike
1 июля 2020, 20:24
Спс за объяснение. Реально не понятно было, в чем смысл задачи!
0
Evgeny Siganov QA Automation Engineer в Айтеко
13 октября 2020, 10:31
добавлю что при создании конструкторов суперкласса в подклассе через Alt+Insert они расширяются до public и это тоже нужно учитывать
+1
Anonymous #561555
16 января 2021, 06:46
А почему мы можем сузить модификатор доступа в конструкторе? Вроде в методах нельзя было так...
+1
Temnota
1 июня 2020, 14:25
в классе Solution, а не в методе main
+3
Darth Nihilus Разработчик спокойствия в Rage&Flame Industrie
26 мая 2020, 12:45
Не обсуждение задачи, а сплошное ликование в комментах :)
+4