Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema con herencia

Hola que tal soy nuevo en el foro y tambien principiante en java llevo mas de 2h intentando dar herencia de una clase que se llama Persona a otra que se llama Ciudadano, a ver si me hechan una mano.

package curso;

public class Persona {

private String nombre;
private String apellidos;
private String telefono;


Persona(){

}
Persona(String nombre,String apellidos,String telefono){
this.nombre=nombre;
this.apellidos=apellidos;
this.telefono=telefono;
}

public String getNombre(){
return nombre;
}
public String getApellidos(){
return apellidos;
}

public String getTelefono(){
return telefono;
}

public void setNombre(String nombre){
this.nombre=nombre;
}
public void setApellidos(String apellidos){
this.apellidos=apellidos;
}
public void setTelefono(String telefono){
this.telefono=telefono;
}

}

package curso;

public class Ciudadano extends Persona {
private String poblacion;
private String provincia;
private int edad;

public Ciudadano(){
super();
iniciaAtributos();
}

protected void iniciaAtributos(){
setNombre("un nombre");
edad=0;
}

public String getPoblacion(){
return poblacion;
}


public String getProvincia(){
return provincia;
}

public int getEdad(){
return edad;
}
public void setPoblacion(String poblacion){
this.poblacion=poblacion;
}
public void setProvincia(String provincia){
this.provincia=provincia;
}
public void setEdad(int edad){
this.edad=edad;
}

}

El error aparece en darle uso en la clase principal en la linea 8 al intentar crear el Ciudadano karen a ver si me ayudan saludos y gracias

package curso;

public class PruebaPersona {

public static void main(String[] args) {
// TODO Auto-generated method stub
Persona jorge= new Persona("jorge","perez","9858322");
Ciudadano karen = new Ciudadano ("karen","osuna","9223344","sinaloa","mazatlan",15);






System.out.println("Los datos de la persona son= "+jorge.getNombre()+" "+jorge.getApellidos()+" "+jorge.getTelefono());

}

}

mayo 16, 2015 | Registered Commentercristobalc03

http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8

Tu problema está en esta línea:


Ciudadano karen = new Ciudadano ("karen","osuna","9223344","sinaloa","mazatlan",15);

Estás usando el constructor de Persona en un objeto Ciudadano, además invocándolo con más parámetros de los necesarios. Como puedes ver en el enlace que te he puesto arriba, los constructores no son miembros de la clase y nunca se heredan. Puedes invocar los constructores de la superclase inmediata, eso sí, usando super(...);

mayo 18, 2015 | Registered Commenterrickiees

Hola,

Coincido con Rickiees, y añado que necesitas crear un constructor con tantos parametros como le vas a pasar:

public Ciudadano(String nombre, String apellidos, String telefono, String poblacion, String provincia){
this.nombre =nombre;
this.apellidos=apellidos
.
.
.
.
}

tambien puedes definir un constructor para solo informar el nombre apellidos y telefono, propios de la clase padre, tal ke:

public Ciudadano(String nombre, String apellidos, String telefono){
super();

y mas combinaciones de constructores.
puedes crear tantos constructores como necesites, siempre y cuando no tengan el mismo numero de parametros y estos sean del mismo tipo en ambos constructores.

Saludos, y animo

mayo 19, 2015 | Registered Commenteroldskultxo