Может быть, пример поможет лучше объяснить решение.Предположим, у вас есть два класса, которые называются Vehicle и Car.Автомобиль расширяет Автомобиль, так что Автомобиль может наследовать все функции от Автомобиля.
Родительский класс:
public class Vehicle{
String name;
int age;
}
Дочерний класс:
public Class Car extends Vehicle {
String type;
}
Если у вас нет конструкторов, определенных в классах, он автоматически создаст их внутри, а нижекак это будет выглядеть
Родительский класс:
public class Vehicle{
String name;
int age;
public Vehicle(){
super();
}
}
Дочерний класс:
public Class Car extends Vehicle {
String type;
public Car(){
Super();
}
}
Если у вас есть конструктор, определенный внутри родительского класса, как показано ниже, у него больше не будет конструкторов по умолчанию спустые параметры.
public class Vehicle{
String name;
int age;
public Vehicle(String name, int age){
this.name = name;
this.age = age;
}
}
Поэтому, если вы попытаетесь создать дочерний класс без определения конструктора, он будет выглядеть следующим образом.
public Class Car extends Vehicle {
String type;
public Car(){
Super();
}
}
Теперь выше приведёт к ошибке компиляции, потому что дочерний класс (Car) пытается вызвать конструктор родительского класса (Vehicle) с пустыми параметрами.Поэтому для решения этой проблемы у вас есть два варианта.
Вариант 1: Добавить пустой конструктор параметров в родительский класс.
public class Vehicle{
String name;
int age;
public Vehicle(){
}
public Vehicle(String name, int age){
this.name = name;
this.age = age;
}
}
Вариант 2: Определить конструктор в дочернем классе, который вызывает конструктор родительского класса.
public Class Car extends Vehicle {
String type;
public Car(){
String defaultName = "";
int defaultAge = 0;
Super(defaultName, defaultAge);
}
}