Foro sobre Java SE > Clases Abstractas. ayuda.
¿Cuál es el problema?
public class Mamifero1 extends Mamifero {
// Codigo
public int numerodePiernas() {
//Codigo
}
// implementar los tres metodos abstractos
// y el constructor
}
Desarrolle las clases pero me bota error en las clases extendidas a Mamifero
class Gato extends Mamifero {
public int numerodePiernas() {
System.out.println("Gato - numero e Piernas(): 0 piernas");
}
public int numerodeBrazos() {
System.out.println("Gato - numero de Brazos(): 0 brazos");
}
public int alturaPromedio() {
System.out.println("Gato - altura promedio(): 30 cm");
}
}
class Humano extends Mamifero {
public int numerodePiernas(){
System.out.println("Humano - numero de Piernas(): 2 piernas");
}
public int numerodeBrazos() {
System.out.println("Humano - numero de Brazos(): 2 brazos");
}
public int alturaPromedio(){
System.out.println("Humano - altura promedio(): 1.70 m");
}
}
class Delfin extends Mamifero {
public int numerodePiernas(){
System.out.println("Delfin - numero de Piernas(): 0 piernas");
}
public int numerodeBrazos() {
System.out.println("Delfin - numero de Brazos(): 0 brazos");
}
public int alturaPromedio(){
System.out.println("Delfin - altura promedio(): 80 cm");
}
}
public class Mamiferos {
public static void main(String[] args) throws Exception {
Gato g1 = new Gato();
g1.Mamifero("felina");
g1.numerodePiernas();
g1.numerodeBrazos();
g1.alturaPromedio();
¿Qué IDE estás usando?. Lo pregunto porque cualquier IDE moderno te diría inmediatamente los dos tipos de problemas que tienes con tus implementaciones, en el mismo editor.
1º.- Si una clase abstracta declara un constructor, todas las clases extendidas deben declarar el suyo. Por ejemplo:
public Gato(String especie){
super(especie);
}
2º.- Por otra parte, todos los métodos abstractos que implementas, deben devolver un valor. No tienes ningún return en ninguno de esos métodos, por lo que ni siquiera compilará correctamente.
Te sugiero que uses un buen IDE; y si usas alguno decente, que prestes mucha atención a los errores que sin duda te mostrará.
Pues yo te recomiendo que si quieres aprender bien no utilices por ahora esos buenos editores y que cuando tengas algún tipo de problema como este tires de documentación y foro.
Un saludo
No estoy de acuerdo en que para aprender bien no se use un buen IDE.
Precisamente es al contrario, porque los IDE son capaces de detectar muy bien los errores, en el mismo editor, y mostrar no solo el error y su causa, sino su posible remedio.
Y todo ello, mientras se desarrolla, sin necesidad de pelearse con la documentación, y menos sin recurrir a foros.
Siempre se aprende más y mejor viendo sobre la marcha los errores, y las soluciones.
¡Qué mejor documentación se quiere, que el lexer de un buen editor!
Esperar a los resultados de la compilación, para caer en la cuenta de errores léxicos, o de concepto, es una pérdida de tiempo.
Por otra parte, adquirir buenos hábitos será muy útil cuando se deban realizar aplicaciones complejas. No tengo duda de que los mejores hábitos, y los más productivos, se aquieren usando buenas herramientas.
Lo resolvi de esta manera para ya solucionar esto. gracias
abstract class Mamifero {
private String especie;
public Mamifero(String especie){
this.especie=especie;
}
public String getEspecie(){
return especie;
}
public abstract void numerodePiernas();
public abstract void numerodeBrazos();
public abstract void alturaPromedio();
}
class Gato extends Mamifero {
public Gato(String especie){super(especie);}
public void numerodePiernas() {
System.out.println("Gato - numero de Piernas"+": 2 Patas traseras");
}
public void numerodeBrazos() {
System.out.println("Gato - numero de Brazos"+": 2 Patas delanteras");
}
public void alturaPromedio() {
System.out.println("Gato - altura Promedio"+": 30 cm");
} }
class Humano extends Mamifero {
public Humano(String especie){super(especie);}
public void numerodePiernas(){
System.out.println("Humano - numero de Piernas"+": 2 Piernas");
}
public void numerodeBrazos() {
System.out.println("Humano - numero de brazos"+": 2 Brazos");
}
public void alturaPromedio(){
System.out.println("humano - altura Promedio"+": 1.70 cm");
} }
class Delfin extends Mamifero {
public Delfin(String especie){super(especie);}
public void numerodePiernas(){
System.out.println("Delfin - numero de Piernas"+": 1 aleta trasera");
}
public void numerodeBrazos() {
System.out.println("Delfin - numero de Brazos"+": 2 aletas delanteras");
}
public void alturaPromedio(){
System.out.println("Delfin - altura Promedio"+": 80 cm");
} }
public class Mamiferos {
public static void main(String[] args) throws Exception {
Gato g1 = new Gato("felina");
g1.numerodePiernas();
g1.numerodeBrazos();
g1.alturaPromedio();
Humano h1 = new Humano("humano");
h1.numerodePiernas();
h1.numerodeBrazos();
h1.alturaPromedio();
Delfin d1 = new Delfin("Acuatico");
d1.numerodePiernas();
d1.numerodeBrazos();
d1.alturaPromedio();
}}
Que IDE me recomiendan pero que este en español que te ayude a resolver los errores uso net beans pero no esta en español y no encuentro en español a ver si me dan un link.
Si ya usas NetBeans, te recomiendo que continúes con él.
Existen versiones disponibles en varios idiomas:
http://netbeans.org/downloads/index.html
Antes de iniciar la descarga, debes escoger el idioma, mediante el ComboBox justo a la izquierda del correspondiente a la Plataforma.
package abstractas2;
public abstract class Mamifero {
String especie;
public Mamifero(String especie){
this.especie=especie;
}
public String nombreEspecie(){
return this.especie;
}
public abstract int numerodePiernas();
public abstract int numerodeBrazos();
public abstract int alturaPromedio();
}
Implementar tres tipos de mamíferos basados en esta clase abstracta.