Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Shakos en 7 Mayo 2011, 16:06 pm



Título: Clases abtractas
Publicado por: Shakos en 7 Mayo 2011, 16:06 pm
Estoy haciendo un trabajo para el cual es necesario el uso de clases abtractas, pero tengo algunos problemas.
Basicamente dentro de la clase abtracta hay un constructor, una funcion tipo string abtract y otras funciones no abtract en este caso, el problema se plantea cuando yo quiero instanciar un objeto de esa clase, es imposible, en las subclases con el comando super() aun puedes hacer algo pero necesito usar objetos de esa clase fuera de las subclases y se me plantea el problema que no se hacerlo.
He leido que se puede poner Nombre clase abtract x; ahora x es una variable que apunta a null, pero estamos en las mismas si yo quiero llamar a una de las funciones no abtract que se encuentran dentro de la clase abtract tengo que hacerlo de la siguiente manera//
x.nombredelafuncion(); // esto siempre me da un  null pointer , como es razonable dado que la variable no esta inicializada y no puedo crear un objeto vacio atraves de un constructor vacio dado que , al ser clase abtract no se puede.
Lo que quisiera saber es si hay alguna manera de llamar a esas funciones no abtract que se encuentran dentro de la clase abtract sin necesidad de utilizar un objeto de dicha clase para llamarlas, o si se tiene que usar un objeto indiquenme una inicialización correcta


Título: Re: Clases abtractas
Publicado por: Novlucker en 7 Mayo 2011, 17:06 pm
Código
  1. public static void Metodo(){
  2. }

Saludos


Título: Re: Clases abtractas
Publicado por: Shakos en 7 Mayo 2011, 17:45 pm
no entiendo muy bien donde usarlo :S lo siento , no puedo poner el codigo porque es enorme pero...haber si puedo hacer un pequeño esquema

abtract class Publi{
//posee un constructor, un metodo abtracto y otros tantos que no lo son como el metodo addComentarios(Comentario c){
comentarios.add(c);// arraylist que mete comentarios
}

}

class Comentario{
// constructor de comentario

// metodo toString redefinido para la causa

}

class Persona{
//constructor de persona

// creo un nuevo objeto comentario

Ahora recuerdo que la funcion addComentario esta en publicacion por tanto para llamarla tiene que haber un objeto de tipo publicacion cosa que no puede ser porque es abtracta por tanto si finalmente quedase asi

Comentario x = new Comentario(persona, texto)

(objeto de publicacion ).addComentario(x);

}


Título: Re: Clases abtractas
Publicado por: Novlucker en 7 Mayo 2011, 17:50 pm
Usa métodos estáticos.

Saludos


Título: Re: Clases abtractas
Publicado por: Shakos en 7 Mayo 2011, 19:40 pm
Vale gracias despues de algunos intentos por fin lo he conseguido  ;D , ahora tengo otra duda, esta vez supongo que sera mas facil.

public int compareTo(Object o) {
    Persona x = (Persona) o;
    return nombre.compareTo(x.getNombre().toLowerCase());
  }

tengo este codigo en el que basicamente quiero que me ordene alfabeticamente los nombres de las personas, lo que pasa es que no se como imprimir la lista ordenada por pantalla.
He intentado con Collections.sort(listaPersonas), pero no me sirve me marca un error, dice que no encuentra el simbolo (traducido literalmente) pero la lista es un arraylist normal y corriente y esta en la misma clase, la cuestion es que para ordenar obligatoriamente me veo forzado a usar compareTo.