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

Problema con Herencia + Servlets

Estas en el tema de Problema con Herencia + Servlets en el foro de Java en Foros del Web. Que tal amigos: Tengo un problema que quisiera resolver pronto.. Tengo un Servlet que al Ejecutar Crea una instancia de una clase, la cual almacena ...
  #1 (permalink)  
Antiguo 09/07/2008, 12:49
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Problema con Herencia + Servlets

Que tal amigos:

Tengo un problema que quisiera resolver pronto..

Tengo un Servlet que al Ejecutar Crea una instancia de una clase, la cual almacena gran parte del request entre otras cosas..

Código PHP:
package site.catalog;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import BASE.app;

public class 
catalog extends HttpServlet {

    public static 
app APPLICATION;

    protected 
void processRequest(HttpServletRequest requestHttpServletResponse response)
    
throws ServletExceptionIOException {
        
response.setContentType("text/html;charset=ISO-8859-1");
        
PrintWriter out response.getWriter();
        try {
            
APPLICATION = new app(request);
}catch(
Exception ex){
            
out.println("ERROR:"+ex.getMessage());
        }
    } 
La clase app recibe el request y carga una clase dinamicamente llamada "CORE"

Código PHP:
package core;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class 
app {

public 
Object MODULE;
public 
String Str "CARGADA...";
public 
HttpServletRequest REQUEST;
public 
HttpSession SESS;

   public 
app(HttpServletRequest requestthrows Exception{
      
REQUEST request;
      
SESS request.REQUEST.getSession(true);
   }
   
    public 
getModulo(){
   
    try{
          Class 
clase = Class.forName("site.modulo.core");
          
MODULE clase.newInstance();
       }catch (
Exception ex){
          
System.out.println("Exception in: [core]"+ex.getMessage());
       }
    
     return 
MODULE;
    
   }


Todo Bien hasta el momento, todo va de maravillas, la clase app crea la instancia de site.modulo.core perfecto, pero yo quiero que la clase site.modulo.core sea extendida de app, para poder tener acceso a sus metodos y propiedades.

Código PHP:
package site.modulo;

import BASE.app;


public class 
core extends app{
    
    public 
core(){}
    
    public 
String getMe(){
        return 
this.Str;
    }
    

Esto me da error, incluso no lo puedo ni compilar ya que NetBeans no me lo permite.

EL problema proviene cuando intento heredar una clase con un constructor que necesita un parametro.

Según lei que los contructores no se pueden heredar en JAVA pero no he conseguido como solventar este problema. Se que algo tiene que ver la instrucción super();, pero tampoco he conseguido entender bien su funcionamiento en la herencia de objetos.

Si me pueden ayudar seria de gran ayuda.

Gracias...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #2 (permalink)  
Antiguo 10/07/2008, 21:33
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Problema con Herencia + Servlets

Mira cuando tu creas una clase y no le creas un constructor, Java por defecto le crea uno sin parametros y sin que haga nada por ejemplo :

Código:
public class Padre{
     //Java por defecto crea este constructor si tu no lo hiciste
     public Padre(){}
}
Ahora bien si tu haces una clase y le creas un constructor con parametros, java ya no te creará el constructor por defecto, por lo que no podrás instancia esta clase de la siguiente manera

Código:
Padre padre = new Padre()
Sino que tendrás que hacerlo pasandole los parametros del contructor que creaste. Ahora cuando hablamos de herencia es algo parecido, fijate este codigo:

Código:
class Padre{
    public Padre(){}
}

public class Hijo extends Padre{
    public Hijo(){
         //Aqui Java hara una llamada al constructor sin 
        //parametros del padre, si tu no lo hiciste
         /*Codigo que le pongas*/    
    }
}

Ahora que sucede si tu clase Padre no tiene un constructor sin parametros, y tu cuando creas la clase hijo y no haces la llamada al constructor del padre, Java automaticamente lo hara por ti, pero llamara al constructor sin parametros del padre, pero en el padre no le creaste ese constructor, asi tu código no compilara. Lo que tienes que hacer es en la clase Hijo llamar al constructor del padre con los parametros que necesite.


Código:
package site.modulo;

import BASE.app;


public class core extends app{
    
    public core(){
          //Aqui tienes que llamar al constructor de la clase app pasandole
         // como parametro un objeto HttpServletRequest
         //Podria ser algo asi super(objetoHttpServletRequest)
    }
    
    public String getMe(){
        return this.Str;
    }
    
}
Espero no haberte mareado y haberte ayudado nos vemos, cualquier otra consulta, contactame por el msn
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
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 09:52.