Después de especificar un constructor de parámetros al crear una clase, el sistema no creará un constructor sin parámetros de forma predeterminada, y debe ser creado manualmente por usted mismo.
Al crear una instancia de objeto de una subclase, el constructor sin parámetros de la clase principal (el constructor predeterminado) se llamará de forma predeterminada.
Si la clase principal no define un constructor sin parámetros, se informará un error durante la etapa de compilación.
Si la subclase especifica el constructor de parámetros de la clase principal, se puede compilar y ejecutar.
Declaración de subclase Super (ID, City) muestra que se llama al constructor de parámetros de clase principal
paquete cn.lw.testpkg;/*** @author wanglei 18 de abril de 2018*/class predesor {private int id; Ciudad de cadena privada; Public Predosser (int id, String City) {this.id = id; this.city = City; } @Override public String toString () {return "predesor [id =" + id + ", ciudad =" + ciudad + "]"; }} Class Sucesor extiende Predesor {Nombre de cadena privada; sexo de cuerda privada; sucesor público (nombre de cadena, sexo de cadena, int id, string city) {super (id, ciudad); this.name = name; this.sex = sexo; } @Override public String toString () {return "sucesor [name =" + name + ", sex =" + sex + "]"; }} clase pública CallConstructortest {public static void main (string [] args) {sucesor s2 = new Sucesor ("a", "masculino", 1, "hz"); System.out.println (S2); }}Producción
Sucesor [nombre = a, sexo = masculino]
La clase matriz no define un constructor sin parámetros, y la clase infantil no declara súper (ID, ciudad)
Public Sucesor (nombre de cadena, sexo de cadena) {this.name = name; this.sex = sex;}Error de compilación
Predesor implícito Super Constructor () está indefinido. Debe invocar explícitamente otro constructor
La clase principal muestra la definición de constructor sin parámetros, la transitividad de las llamadas de método
paquete cn.lw.testpkg;/*** @author wanglei 18 de abril de 2018*/class predesor {private int id; Ciudad de cadena privada; public Predossor () {System.out.println ("Llame al constructor sin el parámetro de predesor"); } public Predossor (int id, String City) {this.id = id; this.city = City; } @Override public String toString () {return "predesor [id =" + id + ", ciudad =" + ciudad + "]"; }} Class Sucesor extiende Predesor {Nombre de cadena privada; sexo de cuerda privada; Public Sucesor () {System.out.println ("se llamó al constructor sin parámetros del sucesor"); } Public Sucesor (nombre de cadena, sexo de cadena) {this.name = name; this.sex = sexo; } @Override public String toString () {return "sucesor [name =" + name + ", sex =" + sex + "]"; }} clase pública CallConstructortest {public static void main (string [] args) {sucesor s = new Sucesor (); System.out.println (s); System.out.println ("-----------------------"); Sucesor s2 = nuevo sucesor ("a", "masculino"); System.out.println (S2); }}Producción
Llamado constructor sin parámetros. Llamado constructor sin parámetros.
Sucesor [name = null, sex = null]
--------------
Llamado constructor predesor sin argumentos
Sucesor [nombre = a, sexo = masculino]
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.