Доброго всем времени суток. Вопрос в следующем Я выполнил задание, но не проходило третье условие. Вот пример как я делал до этого
public class HybridCar extends Car {
public HybridCar() {
//напишите тут ваш код
Car a = new Car("HybridCar");
}
}
Вопрос следующий: Почему нужно было реализовать именно через super, и важно ли это в последующей работе или можно делать так как я написал в коде выше?
Евгений Рожков
11 уровень
Вопросы к проверке задачи
Обсуждается
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
safelogj Android Developer
4 июня, 20:12
почему надо было через super? так захотел составитель задачи. это просто такая задача, где захотели заставить использовать super. это не значит что без super нельзя было создавать машины.
0
Денис Enterprise Java Developer
4 июня, 21:52
Подскажи плиз, как при таком наследовании это скомпилить без super :)
0
safelogj Android Developer
4 июня, 22:09
я думаю вы поняли и вопрос и мой ответ, если нет, вопрос был про то, обязательно ли использовать супер конструктор при создании наследников. ответ нет, не обязательно. удалите конструтктор из Car или добавьте дефолтный и можете убирать супер.
0
Денис Enterprise Java Developer
4 июня, 22:28
Вопрос был задан в контексте конкретной задачи про наследование, с наличием конструктора (отличного от конструктора по умолчанию) в классе родителе.
Потому не нужно дурить людям голову и рассказывать что "на самом деле всё можно". Нет, нельзя. Базовые механизмы языка, которые в задаче и демонстрируются обязательны к выполнению.
То что в ряде случаев на этапе компиляции умная машина сама подставляет всё что нужно вместо некоторых программистов даже не является исключением из этого правила. Eсли в классах есть только конструкторы по умолчанию, чуда не происходит, и конструкторы там появляются в явном виде.
0
safelogj Android Developer
4 июня, 22:52
вот контекст вопроса и он не о конкретно задаче
0
Денис Enterprise Java Developer
5 июня, 08:19
Давай я тебе помогу:
Чуть ниже написано:
"Я выполнил задание, но не проходило третье условие. Вот пример как я делал до этого"
...
"Вопрос следующий: Почему нужно было реализовать именно через super"
Условия для тех кто ленится его поискать:
Классы ElectricCar, GasCar, HybridCar должны наследоваться от класса Car.
Тело конструктора класса Car не изменяй.
Наследники класса Car должны вызывать конструктор базового класса с соответствующим аргументом.
Класс Car:
Вот уж действительно почему для этой задачи, в конкретном случае нужно было реализовать через super? Само собой это прихоть автора задачи, а не фундаментальный механизм создание объектов классов наследников.
Ну и для полноты картины, вот условие самой задачи:
Эта задача нужна для понимания того, как вызывается конструктор базового класса (родителя).
У тебя есть классы ElectricCar, GasCar, HybridCar, которые наследуют класс Car.
Тебе нужно в конструкторах наследников класса Car передать тип автомобиля в конструктор базового класса (родителя), используя super("тип автомобиля"). Для этого в классе Solution в методе main создай 3 объекта: HybridCar, GasCar и ElectricCar.
Ну и само собой, вместо того чтобы написать, что при создании объектов классов наследников сначала вызывается конструктор родителя, и что если в родителе есть конструктор отличный от дефолтного нужно явно передать в него парамерты, ты сказал что всё это херня, делать можно как хочешь, и вообще удали конструктор в родителе. Ты на работе так же код пишешь? :) Удалил конструктор из родителя, DI пошёл по п*де, но зато компилится, хорошо же ? :)
0
safelogj Android Developer
5 июня, 10:33
у вас подгорело и вы выдрали контекст из вопроса, вопрос был не о конктерной задаче, а об использовании super в будущем.
0
Денис Enterprise Java Developer
5 июня, 10:36
Согласен, мой косяк, повёлся на троллинг тупняком. Больше не буду.
0
Денис Enterprise Java Developer
4 июня, 18:56
Где именно в твоём коде слово super? Что вообще такое super?
Но в целом, кем ты собрался работать если не понимаешь основ языка? :) а if-else партянки можно писать даже на bash'e, программирование тебе зачем?
0