Мне грозит странная вещь. Теория Java говорит, что * подкласс не наследует каких-либо конструкторов из своего суперкласса и должен предоставлять свои собственные. Несмотря на это, я написал программу, что ее основной класс генерирует объект без параметров (конструктор по умолчанию) из подкласса, тогда как в этом подклассе не существует каких-либо конструкторов. Кроме того, этот объект инициализировал атрибуты из своего суперкласса. Это означает, что суперкласс унаследовал свой конструктор к подклассу ... который по теории ошибочен.Создание экземпляра подкласса без construstor в Java
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Student S = new Student();
System.out.println(S);
}
}
public class Person {
private String name="Scarlett";
public String getName(){
return name;
}
}
public class Student extends Person {
private String name="Johansson";
/* THIS IS MISSING BUT STILL WORKING
Student(){
super();
}
*/
@Override
public String toString(){
return "Name is "+getName()+" Surname is "+ this.name;
}
}
И выход из этого кода:
run:
Name is Scarlett Surname is Johansson
BUILD SUCCESSFUL (total time: 1 second)
Он ничего не унаследовал. Вы явно не объявляли никаких конструкторов для 'Student', поэтому компилятор предоставляет конструктор нуля-arg по умолчанию. –