class Salad{
private int numIngridients;
public Salad(int numIngridients){
this.numIngridients = numIngridients;
}
public String[][] salatik(){
String[][] salaticOK = new String[numIngridients][3];
return salaticOK;
}
}
class Calories extends Salad {
}
Error: java: constructor Salad in class Salad cannot be applied to given types; required: int found: no arguments reason: actual and formal argument lists differ in length
При наведении на второй класс, в котором хочу наследовать первый - пишет "There is no default constructor available in 'Salad' "
Как можно наследовать класс в таком случае?
Сообщение об ошибке
Error: java: constructor Salad in class Salad cannot be applied to given types; required: int found: no arguments reason: actual and formal argument lists differ in length
гласит что у Вас отсутствует конструктор по умолчанию в классе, от которого вы пытаетесь унаследоваться
Конструктор по умолчанию это конструктор без аргументов, он подразумевается для классов, у которых в листинге нет ни одного конструктора и его нет у классов с уже объявленным конструктором с аргументами
public Salad(){}
Вот так должен выглядеть класс:
class Salad {
private int numIngridients;
public Salad(){}
public Salad(int numIngridients){
this.numIngridients = numIngridients;
}
public String[][] salatik(){
String[][] salaticOK = new String[numIngridients][3];
return salaticOK;
}
}
Еще наследование возможно, если вы явно наследнике укажете один из существующих конструкторов, который будет вызван при конструировании наследника:
class Calories extends Salad {
public Calories (int numIngridients){
super(numIngridients);
}
}
There is no default constructor available in 'Salad'
.
Нет конструктора по умолчанию в классе Salad, так создайте его.
There is no default constructor available in 'Salad' "
Если нет конструктора по умолчанию в суперклассе, а есть в подклассе, то можно создать конструктор без аргументов в суперклассе (если этого сделать нельзя, то см. далее). Без этого невозможно создать экземпляр подкласса, так как конструктор по умолчанию является конструктором без аргументов (обратное неверно) и он будет неявно вызывать такой же конструктор суперкласса при создании экземпляра подкласса. И если в подклассе есть какой-нибудь конструктор, то конструктор по умолчанию не существует.
Для создания экземпляра подкласса требуется последовательно вызывать конструкторы суперклассов, поэтому если какой нибудь из конструкторов отсутствует, то его надо создавать явно. Если в суперклассе есть конструктор с аргументами, следовательно отсутствует конструктор по умолчанию, и в подклассе нужно создавать такой же конструктор, который вызывает конструктор суперкласса и передаёт ему аргументы. Для этого в первой строке конструктора подкласса надо вызывать конструктор суперкласса следующим образом
super(*args*);
Что-то наподобие того как в этом ответе.
Здесь не важно какой конструктор и сколько у него аргументов, главное чтобы вызывался конструктор суперкласса при создании подкласса.
Если в подклассе есть конструктор без аргументов, то он будет вызываться неявно из конструктора по умолчанию, но в данном случае такого конструктора нет, и по этой причине возникает ошибка.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть 4 таблицы в базе и все они связаны между собой,нужно вывести данные только из одной таблицыИспользую hibernate, и когда вывожу данные из одной...
Помогите пожалуйста разобраться с заданиемЯ только начал изучать язык JAVA и пока с этим есть некоторые трудности Суть задачи:
У меня есть короткий mp3 файл из которого мне нужно получить сырую аудио-дорожку в виде массива для последующего преобразования ФурьеЯ пытался...