Я восстанавливаю следующий код из учебника.Когда я запускаю , выполняю его, я получаю следующую ошибку:
Конструктор Vierbeiner в классе Vierbeiner не может быть применен к данным типам;обязательно: java.lang.String найдено: нет аргументов причина: фактические и формальные списки аргументов различаются по длине
Насколько я понимаю, эта ошибка возникает из-за того, что родительский класс Vierbeiner имеет конструктор, который требует аргумент Stringи нет конструктора, не требующего аргумента.Я не понимаю, почему я получаю эту ошибку, не создавая объект класса Hund.Почему конструктор вызывается, когда я не создал объект класса Hund?Каждый существующий вопрос, который я видел об этой ошибке, включает создание объекта дочернего класса.
public class Vierbeiner {
public static void main(String[] args){
Vierbeiner hund = new Vierbeiner("Bello");
hund.rennen();
}
String vierbeinerName;
Vierbeiner(String pName) {
vierbeinerName = pName;
}
public void rennen() {
System.out.println(vierbeinerName+" rennt los!");
}
}
class Hund extends Vierbeiner {
}
РЕДАКТИРОВАТЬ: В ответ на полученные ответы, мне все еще не ясно, почему следующее (случай 1) компилируется без проблем:
public class Vierbeiner{
public static void main(String[] args){
Vierbeiner hund = new Vierbeiner();
Hund hund2 = new Hund();
// Hund hund3 = new Hund("doggy");
}
String vierbeinerName;
Vierbeiner() {
vierbeinerName = "test";
};
Vierbeiner(String pName){
}
}
class Hund extends Vierbeiner{
};
В котором я создаю объект Hund, по-видимому, используя конструктор без аргументов, который я определил в классе Vierbeiner.
Но если я раскомментирую следующее (случай 2), я получаю ошибку компиляции:
Hund hund3 = new Hund("doggy");
В случае 1 компилятор обращается к родительскому классу Vierbeiner, чтобы найти конструктор без аргументов для создания объекта hund2.В случае 2 я бы ожидал, что компилятор сделает то же самое, то есть перейдет к родительскому классу Vierbeiner, чтобы найти конструктор строкового аргумента для создания объекта hund3, но, похоже, это не так без использования «super» иЯ не понимаю почему.