Foros del Web » Programación para mayores de 30 ;) » Java »

Herencia Java

Estas en el tema de Herencia Java en el foro de Java en Foros del Web. Hola, estoy haciendo un página web en JSP y el problema que tengo es que tengo una clase base y otra subclase (hereda de la ...
  #1 (permalink)  
Antiguo 22/10/2005, 10:07
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
Herencia Java

Hola, estoy haciendo un página web en JSP y el problema que tengo es que tengo una clase base y otra subclase (hereda de la anterior, o eso intento)
las clases las tengo dentro del directorio "WEB-INF/classes/mipagina" de mi aplicación web.

En cada clase tengo puesto: "package mipagina;".

Mi clase base la tengo declarada como "public class base" con sus atributos "public".
mi subclase la declaro como "public class subclase extends base".

A la hora de compilar la clase base no hay problema, pero cuando compilo la subclase me dice que no encuentra los atributos que deberia heredar.
¿que hago? muchas gracias de antemano.
  #2 (permalink)  
Antiguo 22/10/2005, 11:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Hola,

Lo primero aclarar que tu problema no tiene nada que ver con JSPs ni con donde esten colocadas tus clases, ya que todavia no están compiladas. Lo digo por que cuanto más definido esté el problema menos cosas tienes por en medio.

El problema en si es cuestión de como manejar la herencia en Java, para lo cual te recomiendo cualquier manual básico donde lo suelen explicar en profundidad. Seguramente, los miembros que deseas que sean accesibles desde la subclase no esten bien definidos, en cuanto a visibilidad, y por eso no los puedas acceder.
Sin mensaje de error y sin ver como están definidos los miembros que quieres acceder, todo los demás son adivinanzas .

Por cierto, los nombres de las clases en Java, por convención, se escriben con la primera en mayuscula, asi que mejor si las llamas Clase y Subclase.

Un saludo
  #3 (permalink)  
Antiguo 22/10/2005, 14:26
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
increible pero cierto

he estado haciendo pruebas y repruebas, y me sigue dando el mismo error, he probado con el siguiente código que he sacado de unos apuntes de un profe:
Proteccion.java
package p1;

public class Proteccion{
int n=1;
private int n_pri=2;
protected int n_pro = 3;
public int n_pub=4;

public Proteccion(){
System.out.println("constructor base");
System.out.println("n = " +n);
System.out.println("n_pri = "+n_pri);
System.out.println("n_pro = "+n_pro);
System.out.println("n_pub = "+n_pub);
}
}

Derivada.java
package p1;

public class Derivada extends Proteccion {
public Derivada(){
System.out.println("Constructor derivado");
System.out.println("n = "+n);

System.out.println("n_pro = "+n_pro);
System.out.println("n_pub = "+n_pub);
}
}

y me da los siguientes errores:

Derivada.java:3: cannot find symbol
symbol: class Proteccion
public class Derivada extends Proteccion {
^
Derivada.java:6: cannot find symbol
symbol : variable n
location: class p1.Derivada
System.out.println("n = "+n);
^
Derivada.java:8: cannot find symbol
symbol : variable n_pro
location: class p1.Derivada
System.out.println("n_pro = "+n_pro);
^
Derivada.java:9: cannot find symbol
symbol : variable n_pub
location: class p1.Derivada
System.out.println("n_pub = "+n_pub);
^
4 errors

y ahí me he quedado, muchas gracias de nuevo de antemano
  #4 (permalink)  
Antiguo 22/10/2005, 14:45
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo Lo Conseguí!!

ya está, el problema estaba en que debia compilar la clase derivada indicando el paquete donde estaba la clase base de la forma:
"javac ./p1/Derivada.java -classpath ./p1;"
que complicado que es esto, muchas gracias
  #5 (permalink)  
Antiguo 22/10/2005, 17:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Para otras veces, fijate que el error importante es el primero, que te dice que no encontraba la clase Proteccion, el resto son errores "derivados" que en cuanto arreglas el primero, desaparecen. Así que cuando te aparecen varios errores, lo mejor es empezar por arriba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:42.