Depois de especificar um construtor de parâmetros ao criar uma classe, o sistema não criará um construtor sem parâmetros por padrão e precisa ser criado manualmente sozinho.
Ao criar uma instância de objeto de uma subclasse, o construtor sem parâmetros da classe pai (o construtor padrão) será chamado por padrão.
Se a classe pai não definir um construtor sem parâmetros, um erro será relatado durante o estágio de compilação.
Se a subclasse especificar o construtor de parâmetros da classe pai, ele poderá ser compilado e executado.
Subclasse Declaration Super (ID, City) mostra que o construtor de parâmetros da classe pai é chamado
pacote cn.lw.testpkg;/*** @author wanglei 18 de abril de 2018*/classe Predessor {private int id; Private String City; public Predessor (int id, string city) {this.id = id; this.city = city; } @Override public string tostring () {return "predessor [id =" + id + ", city =" + city + "]"; }} classe sucessor estende o Predessor {private String Name; sexo privado de cordas; public sucessor (nome da string, sexo de string, int id, string city) {super (id, cidade); this.name = nome; this.sex = sexo; } @Override public string tostring () {return "sucessor [name =" + name + ", sex =" + sexo + "]"; }} classe pública calConstructorTest {public static void main (string [] args) {sucessor s2 = new sucessor ("a", "masculino", 1, "hz"); System.out.println (S2); }}Saída
Sucessor [nome = a, sexo = masculino]
A classe pai não define um construtor sem parâmetros, e a classe infantil não declara super (id, cidade)
public sucessor (nome da string, sexo de string) {this.name = name; this.sex = sexo;}Erro de compilação
O super construtor implícito Predesssor () é indefinido. Deve invocar explicitamente outro construtor
A classe pai exibe a definição de construtor sem parâmetros, a transitividade das chamadas de método
pacote cn.lw.testpkg;/*** @author wanglei 18 de abril de 2018*/classe Predessor {private int id; Private String City; public PredessSor () {System.out.println ("Ligue para o construtor sem o parâmetro de Predessor"); } public predessor (int id, string city) {this.id = id; this.city = city; } @Override public string tostring () {return "predessor [id =" + id + ", city =" + city + "]"; }} classe sucessor estende o Predessor {private String Name; sexo privado de cordas; public sucessor () {System.out.println ("O construtor sem parâmetros do sucessor foi chamado"); } public sucessor (nome da string, sexo de string) {this.name = name; this.sex = sexo; } @Override public string tostring () {return "sucessor [name =" + name + ", sex =" + sexo + "]"; }} classe pública calConstructorTest {public static void main (string [] args) {sucessor s = new sucessor (); System.out.println (s); System.out.println ("---------------------"); Sucessor s2 = novo sucessor ("a", "masculino"); System.out.println (S2); }}Saída
Chamado de construtor sem parâmetros. Chamado de construtor sem parâmetros.
Sucessor [nome = nulo, sexo = nulo]
----------------
Chamado de construtor de predissor sem argumentos
Sucessor [nome = a, sexo = masculino]
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.