ubiquitour.com

Cómo convertir en Java 6

Equipo de programación, encasillamiento se refiere a tomar un objeto de un tipo y convertirlo en un objeto de otro tipo. En Java 6, generalmente, pero no siempre, se trata de upcasting o downcasting, que significa lanzar un objeto hacia arriba o hacia abajo de la jerarquía de herencia.

Instrucciones

1 Pegue las siguientes clases de Java en un archivo de texto en blanco. Estos son la clase que se utilizará para el tutorial:

clase persona {}

pública clase MalePerson extiende persona}

2 Pegue el siguiente upcast:

Person p = new MalePerson("Tom");

La clase MalePerson es una subclase de persona, así que este es un molde encima de la jerarquía. Upcasting es el tipo más fácil de fundido para arrancar. Java simplemente sabe qué hacer cuando una subclase es asignada a uno de sus antepasados. Hacer una nota mental, sin embargo: Java se acordará siempre que un objeto es realmente durante una conversión hacia arriba. Incluso ahora que el MalePerson "Tom" ha sido asignado a un objeto de persona genérico, Java recuerda que este objeto es realmente un MalePerson.

3 Pegue la siguiente conversión:

Person p = new MalePerson("Tom");

MalePerson m = (MalePerson) p;

Downcasts como esta, que se mueven por la jerarquía, requieren que el programador especificar el tipo de clase se utiliza para el reparto entre paréntesis. Sin embargo, el downcasting es más complejo que upcasting.

4 Intente la siguiente conversión:

Person p = new Person("Jane");

MalePerson m = (MalePerson) p;

Este intento falla, y no debería ser difícil ver por qué. Si bien es razonable suponer que un MalePerson es una persona, no es razonable para el equipo asumir que todas las personas son MalePersons. Algunos pueden ser FemalePersons, y la diferencia puede o no ser trivial para los propósitos del equipo. Sólo para estar seguro, el programa tira un error.

Una conversión sólo puede ocurrir si una conversión hacia arriba se ha producido en primer lugar, que es la conversión hacia arriba en el paso 3 fue válido, pero no en el paso 4. Esto puede hacer upcasting sonido inútiles al principio. Plantea la pregunta de por qué la upcast se realizó en primer lugar, pero sostener ese pensamiento.

5 Considere el siguiente método:

público void saludar (persona p) {}

if (p instanceof MalePerson) {

MalePerson m = (MalePerson) p;

m.doMaleThings();

} else if (p instanceof FemalePerson) {

FemalePerson f = (MalePerson) p;

f.doFemaleThings();

} else throw new GenderConfusionException();

}

El escritor de este método no tiene forma de saber de antemano si este método se llamará con un MalePerson o un objeto de FemalePerson, por lo que usa el objeto genérico de la persona. Luego, utiliza el comando de instanceof para sondear la persona dada y ver si él debe abatido como un hombre o una persona de sexo femenino.