Todos los logos y marcas utilizados en este documento, estn registrados y pertenecen a sus respectivos dueos. AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 1
Curso: "Programacin Java SE" 2013
Introduccin Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. La Herencia es uno de los ms importantes conceptos y caractersticas de la Programacin Orientada a Objetos, una de las bases de las abstracciones y polimorfismo. Bsicamente permite reusar cdigo desde una clase hija, heredando atributos y mtodos definidos en la clase padre o sper clase, siempre y cuando haya una relacin de parentesco entre ambas entidades. En Java, todas las clases tienen una superclase. Si no se especifica una superclase para una clase, se asume que es la clase Object. La clase Object define el estado bsico y el comportamiento que todos los objetos deben tener como habilidad para comparar unos objetos con otros, para convertir una cadena etc.
Objetivo El objetivo de esta prctica de laboratorio es exponer los conceptos que hay detrs de la herencia de clases. Aprenderemos a crear clases que hereden o extienden de otra clase, tambin veremos la sobre- escritura de mtodos, donde una clase hija remplaza o modifica el mtodo de la sper clase o padre. Finalmente aprenderemos a usar las clases final y el mtodo final. AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 3
Curso: "Programacin Java SE" 2013
Ejercicio 1: Creando nuestra primera Clase Java Estudiante 1. Abrir Netbeans IDE 2. Crear un proyecto Netbeans: Java Application Seleccionar File desde el men superior y seleccionar New Project. Observar que aparece la ventana de dialogo New Project. Seleccionar Java bajo Categories, y Seleccionar Java Application bajo la seccin Projects. Clic Next.
Bajo el panel Name and Location, para el Nombre del Proyecto (Project Name), ingrese ProyectoElemploPersonas. Este es el nombre que se le dar al proyecto. Para el campo Create Main Class, ingresar ElemploPersonas. (Figura de abajo) Esto es para generar la clase autnoma ElemploPersonas.java, que contendr el mtodo main(..) que ser generado por Netbeans. Clic Finish. AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 5
Curso: "Programacin Java SE" 2013
Observe que el proyecto ProyectoElemploPersonas y ha sido creado bajo la pestaa Projects de NetBeans IDE y adems ha generado automticamente la clase ElemploPersonas.java la cual es desplegada en el editor de cdigo del IDE.
3. Creando la clase java Persona: Clic derecho en el proyecto ProyectoElemploPersonas y seleccionamos New->Java Class.
Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Persona Clic Finish. AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 7
Curso: "Programacin Java SE" 2013
Observe que se crea la clase Persona.java y es desplegada en el editor de cdigo del IDE. Modifique la clase Persona.java como se muestra en el Cdigo de abajo, poner especial atencin en los atributos nombre, apellido y direccin con sus respectivos mtodos getter/setter. /** * * @author Andrs Guzmn */ public class Persona {
public String getDireccion() { return direccion; }
public void setDireccion(String direccion) { this.direccion = direccion; }
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; } }
4. Creando la clase java Estudiante: Clic derecho en el proyecto ProyectoElemploPersonas y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Estudiante Clic Finish.
Observe que se crea la clase Estudiante.java y es desplegada en el editor de cdigo del IDE. Modifique la clase Estudiante.java como se muestra en el Cdigo de abajo, poner especial atencin en los atributos del estudiante institucin y promedio con sus respectivos mtodos getter/setter. /** * * @author Andrs Guzmn */ public class Estudiante extends Persona { private String institucion;
private double promedio;
public String getInstitucion() { return institucion; }
public void setInstitucion(String institucion) { this.institucion = institucion; }
public double getPromedio() { return promedio; }
public void setPromedio(double promedio) { this.promedio = promedio; } }
5. Creando la clase java EstudianteInternacional: Clic derecho en el proyecto ProyectoElemploPersonas y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese EstudianteInternacional Clic Finish. AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 10
Curso: "Programacin Java SE" 2013
Observe que se crea la clase EstudianteInternacional.java y es desplegada en el editor de cdigo del IDE. Modifique la clase EstudianteInternacional.java como se muestra en el Cdigo de abajo, poner especial atencin en el atributo pais con sus respectivos mtodos getter/setter. public class EstudianteInternacional extends Estudiante {
private String pais;
public String getPais() { return pais; }
public void setPais(String pais) { this.pais = pais; } }
6. Creando la clase java Profesor: Clic derecho en el proyecto ProyectoElemploPersonas y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Profesor Clic Finish.
Observe que se crea la clase Profesor.java y es desplegada en el editor de cdigo del IDE. Modifique la clase Profesor.java como se muestra en el Cdigo de abajo, poner especial atencin en el atributo tituloAcademico con sus respectivos mtodos getter/setter. /** * * @author Andrs Guzmn */ public class Profesor extends Persona {
private String tituloAcademico;
public String getTituloAcademico() { return tituloAcademico; }
public void setTituloAcademico(String tituloAcademico) { this.tituloAcademico = tituloAcademico; } }
7. Modificar el contenido generado por el IDE en la clase ElemploPersonas.java. Modifique la clase ElemploPersonas.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. /** * @author Andrs Guzmn */ public class ElemploPersonas { public static void main(String[] args) { // Creamos objetos instancias y asignamos los datos por setter. // Notamos que podemos usar los mtodos definidos en las superclases // en los objetos instancias hijas
Persona persona1 = new Persona(); persona1.setNombre("Bruce"); persona1.setApellido("Lee");
Estudiante estudiante1 = new Estudiante(); estudiante1.setNombre("John"); estudiante1.setApellido("Doe"); estudiante1.setInstitucion("Universidad Estatal I");
EstudianteInternacional estInt = new EstudianteInternacional(); estInt.setNombre("James"); estInt.setInstitucion("Universidad Estatal I"); estInt.setPais("USA");
Profesor prof = new Profesor(); prof.setNombre("Andrs"); persona1.setApellido("Guzmn"); prof.setTituloAcademico("Java EE");
// Imprimir los nombres de todos los objetos instancias usando el mtodo // getNombre() definido en la clase Persona. System.out.println("Imprimir los nombres de todos los objetos instancias..."); System.out.println(" persona1.getNombre() = " + persona1.getNombre()); System.out.println(" estudiante1.getNombre() = " + estudiante1.getNombre()); System.out.println(" estInt.getNombre() = " + estInt.getNombre()); System.out.println(" prof.getNombre() = " + prof.getNombre()); } }
8. Construir y ejecutar el programa Clic derecho del mouse sobre el proyecto ProyectoElemploPersonas y seleccionar Run Observe el resultado en la salida de consola (Tab Output):
9. Obtener las clases de la jerarqua a travs del mtodo getSuperclass() de la clase Class Modifique la clase ElemploPersonas.java como se muestra en el Cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. /** * @author Andrs Guzmn */ public class ElemploPersonas { public static void main(String[] args) { // Creamos objetos instancias y asignamos los datos por setter. // Notamos que podemos usar los mtodos definidos en las superclases // en los objetos instancias hijas
Persona persona1 = new Persona(); persona1.setNombre("Bruce"); persona1.setApellido("Lee");
Estudiante estudiante1 = new Estudiante(); estudiante1.setNombre("John"); estudiante1.setApellido("Doe"); estudiante1.setInstitucion("Universidad Estatal I");
EstudianteInternacional estInt = new EstudianteInternacional(); estInt.setNombre("James"); estInt.setInstitucion("Universidad Estatal I"); estInt.setPais("USA");
Profesor prof = new Profesor(); prof.setNombre("Andrs"); run: Imprimir los nombres de todos los objetos instancias... persona1.getNombre() = Bruce estudiante1.getNombre() = John estInt.getNombre() = James prof.getNombre() = Andrs BUILD SUCCESSFUL (total time: 1 second) AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 14
// Imprimir los nombres de todos los objetos instancias usando el mtodo // getNombre() definido en la clase Persona. System.out.println("Imprimir los nombres de todos los objetos instancias..."); System.out.println(" persona1.getNombre() = " + persona1.getNombre()); System.out.println(" estudiante1.getNombre() = " + estudiante1.getNombre()); System.out.println(" estInt.getNombre() = " + estInt.getNombre()); System.out.println(" prof.getNombre() = " + prof.getNombre());
// Imprimir las clases de la jerarqua de la clase EstudianteInternacional // a traves del mtodo getSuperclass() de la clase Class. Class class1 = estInt.getClass();
System.out.println("Imprimir las clases de la jerarqua de la clase EstudianteInternacional..."); while (class1.getSuperclass() != null){ String child = class1.getName(); String parent = class1.getSuperclass().getName(); System.out.println(" " + child + " clase es hija de la clase " + parent); class1 = class1.getSuperclass(); } } }
Clic derecho del mouse sobre el proyecto ProyectoElemploPersonas y seleccionar Run Observe el resultado en la salida de consola (Tab Output): run: Imprimir los nombres de todos los objetos instancias... persona1.getNombre() = Bruce estudiante1.getNombre() = John estInt.getNombre() = James prof.getNombre() = Andrs Imprimir las clases de la jerarqua de la clase EstudianteInternacional... EstudianteInternacional clase es hija de la clase Estudiante Estudiante clase es hija de la clase Persona Persona clase es hija de la clase java.lang.Object BUILD SUCCESSFUL (total time: 0 seconds)
Ejercicio 2: Llamando a los constructores en cadena 1. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonas y selecciona Copy 2. Renombrar nueva copia a ProyectoElemploPersonasConstructor.
3. En el campo Proyect Name ingresar ProyectoElemploPersonasConstructor. 4. Clic en Copy AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 16
Curso: "Programacin Java SE" 2013
5. Observe que el proyecto ProyectoElemploPersonasConstructor y ha sido creado bajo la pestaa Projects de NetBeans IDE. 6. Modificamos la clase Persona.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Persona {
public void setNombre(String nombre) { this.nombre = nombre; } }
7. Modificamos la clase Estudiante.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Estudiante extends Persona {
public Estudiante() { System.out.println("Estudiante: constructor inicializado"); }
public String getInstitucion() { return institucion; }
public void setInstitucion(String institucion) { this.institucion = institucion; }
public double getPromedio() { return promedio; }
public void setPromedio(double promedio) { this.promedio = promedio; } }
8. Modificamos la clase EstudianteInternacional.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class EstudianteInternacional extends Estudiante{
private String pais;
public EstudianteInternacional() { System.out.println("EstudianteInternacional: constructor inicializado"); }
public void setPais(String pais) { this.pais = pais; } }
9. Modificamos la clase Profesor.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Profesor extends Persona {
private String tituloAcademico;
public Profesor() { System.out.println("Profesor: constructor inicializado"); }
public String getTituloAcademico() { return tituloAcademico; }
public void setTituloAcademico(String tituloAcademico) { this.tituloAcademico = tituloAcademico; } }
10. Modificamos la clase ElemploPersonas.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class ElemploPersonas {
public static void main(String[] args) { // Creamos un objeto instancias de EstudianteInternacional. System.out.println("---- Creamos un objeto instancias de EstudianteInternacional..."); EstudianteInternacional estInt = new EstudianteInternacional();
// Creamos un objeto instancias de Profesor. System.out.println("---- Creamos un objeto instancias de Profesor..."); Profesor prof = new Profesor(); } } 11. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonasConstructor y seleccionar Run, observe el resultado en la salida de consola (Tab Output): ---- Creamos un objeto instancias de EstudianteInternacional... Persona: constructor inicializado Estudiante: constructor inicializado EstudianteInternacional: constructor inicializado ---- Creamos un objeto instancias de Profesor... Persona: constructor inicializado Profesor: constructor inicializado
Ejercicio 3: La referencia super 1. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonas y selecciona Copy 2. Renombrar nueva copia a ProyectoElemploPersonasConstructorSuper.
3. En el campo Proyect Name ingresar ProyectoElemploPersonasConstructorSuper. 4. Clic en Copy AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 20
Curso: "Programacin Java SE" 2013
5. Observe que el proyecto ProyectoElemploPersonasConstructorSuper y ha sido creado bajo la pestaa Projects de NetBeans IDE. 6. Modificamos la clase Persona.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Persona {
private String nombre;
private String apellido;
private String direccion;
public Persona(String nombre) { this.nombre = nombre; }
public String getApellido() { return apellido; }
public void setApellido(String apellido) { this.apellido = apellido; }
public String getDireccion() { return direccion; }
public void setNombre(String nombre) { this.nombre = nombre; } }
7. Modificamos la clase Estudiante.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Estudiante extends Persona {
8. Modificamos la clase EstudianteInternacional.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class EstudianteInternacional extends Estudiante{
public void setPais(String pais) { this.pais = pais; } }
El cambio es llamar al constructor de la superclase utilizando el mtodo super (), para inicializar el nombre, institucin y promedio en Estudiante.
9. Modificamos la clase Profesor.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Profesor extends Persona {
10. Modificamos la clase ElemploPersonas.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. /** * @author Andrs Guzmn */ public class ElemploPersonas {
public static void main(String[] args) {
// Creamos un objeto instancias de la clase EstudianteInternacional. System.out.println("---- Creamos un objeto instancias de la clase EstudianteInternacional...");
EstudianteInternacional estInt = new EstudianteInternacional("John Doe", // Nombre "Universidad TI", // Institucin 6.5, // Promedio "Chile"); // Pas
11. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonasConstructorSuper y seleccionar Run, observe el resultado en la salida de consola (Tab Output): run: ---- Creamos un objeto instancias de la clase EstudianteInternacional... estInt.getNombre() = John Doe estInt.getInstitucion() = Universidad TI estInt.getPromedio() = 6.5 estInt.getPais() = Chile BUILD SUCCESSFUL (total time: 0 seconds)
Ejercicio 4: Sobre escritura de mtodos en la herencia, la clase hija reemplaza un mtodo del padre o superclase. Una clase puede sobrescribir un mtodo de sus superclases. El mtodo que sobrescribe debe tener el mismo, nombre, tipo de retorno y lista de parmetros que el mtodo al que ha sobrescrito La sobrescritura de mtodos es algo bastante comn en mecanismos de herencia, puesto que los mtodos que fueron creados para una clase "padre" no tienen por qu ser los mismos que los definidos en las clases que heredan. Polimorfismo puro, comportamientos diferentes, asociados a objetos distintos.
1. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonasConstructorSuper y selecciona Copy 2. Renombrar nueva copia a ProyectoElemploPersonasSobreEscritura. 3. En el campo Proyect Name ingresar ProyectoElemploPersonasSobreEscritura. 4. Clic en Copy
5. Observe que el proyecto ProyectoElemploPersonasSobreEscritura y ha sido creado bajo la pestaa Projects de NetBeans IDE.
6. Modificamos la clase Persona.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Persona {
private String nombre;
private String apellido;
private String direccion;
public Persona(String nombre) { this.nombre = nombre; }
public String getApellido() { return apellido; }
public void setApellido(String apellido) { this.apellido = apellido; }
public String getDireccion() { return direccion; }
public void setDireccion(String direccion) { this.direccion = direccion; }
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
// Un mtodo que ser sobre-escrito o reemplazado por la clase hija (sub-clase) public void unImportanteMetodo(String t){ System.out.println("unImportanteMetodo(" + t + ") en la clase Persona"); } }
7. Modificamos la clase Estudiante.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class Estudiante extends Persona {
public String getInstitucion() { return institucion; }
public void setInstitucion(String institucion) { this.institucion = institucion; }
public double getPromedio() { return promedio; }
public void setPromedio(double promedio) { this.promedio = promedio; }
// Sobre-escribe el mtodo de la clase padre Persona @Override public void unImportanteMetodo(String t){ System.out.println("unImportanteMetodo(" + t + ") en la clase Estudiante"); } }
Reemplaza el comportamiento del mtodo unImportanteMetodo(String t) de la clase padre, permite polimorfismo, diferentes formas de implementar el mismo comportamiento en una jerarqua de clases.
8. Modificamos la clase EstudianteInternacional.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class EstudianteInternacional extends Estudiante{
public void setPais(String pais) { this.pais = pais; }
// Sobre-escribe el mtodo de la clase padre Estudiante @Override public void unImportanteMetodo(String t){ System.out.println("unImportanteMetodo(" + t + ") en la clase EstudianteInternacional"); } }
Sobre-escribe el mtodo de la clase padre Estudiante.
9. Modificamos la clase ElemploPersonas.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class ElemploPersonas {
public static void main(String[] args) {
// Mismo mtodo o comportamiento que se implementa de diferentes formas en cada clase. System.out.println("---- Observe como cambia el comportamiento al sobre-escribir el mtodo ----");
Persona persona1 = new Persona("John"); persona1.unImportanteMetodo("test1");
Estudiante est1 = new Estudiante("Fulano", "Instituto N1", 5.0); est1.unImportanteMetodo("test2");
EstudianteInternacional estInt = new EstudianteInternacional("Fulano", "Instituto N2", 5.5, "Chile"); estInt.unImportanteMetodo("test3"); } }
10. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonasSobreEscritura y seleccionar Run, observe el resultado en la salida de consola (Tab Output): run: ---- Observe como cambia el comportamiento al sobre-escribir el mtodo ---- unImportanteMetodo(test1) en la clase Persona unImportanteMetodo(test2) en la clase Estudiante unImportanteMetodo(test3) en la clase EstudianteInternacional BUILD SUCCESSFUL (total time: 0 seconds)
11. Nuevamente modificamos la clase ElemploPersonas.java, para agregar unas lneas ms ;-) , como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. public class ElemploPersonas {
public static void main(String[] args) {
// Mismo mtodo o comportamiento que se implementa de diferentes formas en cada clase. System.out.println("---- Observe como cambia el comportamiento al sobre-escribir el mtodo ----");
Persona persona1 = new Persona("John"); persona1.unImportanteMetodo("test1");
Estudiante est1 = new Estudiante("Fulano", "Instituto N1", 5.0); est1.unImportanteMetodo("test2");
EstudianteInternacional estInt = new EstudianteInternacional("Sultano", "Instituto N2", 5.5, "Chile"); estInt.unImportanteMetodo("test3");
// Polimorfismo puro, son todo al fin y al cabo tipos de Persona System.out.println("---- Observe el comportamiento de polimorfismo ----");
Persona persona2 = new Estudiante("Mengano", "Instituto N3", 6.0); persona2.unImportanteMetodo("test4");
Persona persona3 = new EstudianteInternacional("Perengano", "Instituto N4", 4.5, "Chile"); persona3.unImportanteMetodo("test5");
// Polimorfismo puro, EstudianteInternacional tambin es tipo de Estudiante ya que hereda de l. Estudiante est2 = new EstudianteInternacional("Otro John", "Instituto N4", 5.7, "Chile"); est2.unImportanteMetodo("test6"); } }
12. Clic derecho del mouse sobre el proyecto ProyectoElemploPersonasSobreEscritura y seleccionar Run, observe el resultado en la salida de consola (Tab Output): run: ---- Observe como cambia el comportamiento al sobre-escribir el mtodo ---- unImportanteMetodo(test1) en la clase Persona unImportanteMetodo(test2) en la clase Estudiante unImportanteMetodo(test3) en la clase EstudianteInternacional ---- Observe el comportamiento de polimorfismo ---- unImportanteMetodo(test4) en la clase Estudiante unImportanteMetodo(test5) en la clase EstudianteInternacional unImportanteMetodo(test6) en la clase EstudianteInternacional BUILD SUCCESSFUL (total time: 0 seconds)
Ejercicio 5: Sobre escritura de mtodos en la herencia, un programa para envos de Mensajes. 1. Crear un proyecto Netbeans: Java Application Seleccionar File desde el men superior y seleccionar New Project. Seleccionar Java bajo Categories, y Seleccionar Java Application bajo Projects. Clic Next Bajo el panel Name and Location, para el Nombre del Proyecto (Project Name), ingrese ProyectoEjemploMensaje. Este es el nombre que se le dar al proyecto. Para el campo Create Main Class, ingresar EjemploMensaje. Esto es para generar la clase autnoma EjemploMensaje.java, que contendr el mtodo main (...). Clic Finish.
2. Creando la clase java Mensaje: Clic derecho en el proyecto ProyectoEjemploMensaje y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Mensaje Clic Finish. Observe que se crea la clase Mensaje.java y es desplegada en el editor de cdigo del IDE.
3. Modifique la clase Mensaje.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. /** * * @author Andrs Guzmn */ public class Mensaje {
private String texto;
public Mensaje(String texto) { this.texto = texto; }
4. Creando la clase java MensajeFormal: Clic derecho en el proyecto ProyectoEjemploMensaje y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese MensajeFormal Clic Finish. Observe que se crea la clase MensajeFormal.java y es desplegada en el editor de cdigo del IDE.
Modifique la clase MensajeFormal.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. import java.util.Date;
/** * * @author Andrs Guzmn */ public class MensajeFormal extends Mensaje {
private String remitente; private String destinatario; private boolean esUrgente; private Date fechaEnvio = new Date();
public MensajeFormal(String texto, String remitente, String destinatario) {
5. Modificamos la clase EjemploMensaje.java, como se muestra en el cdigo de abajo, poner especial atencin en los cdigos agregados resaltados con negrita y azul. /** * * @author Andrs Guzmn */ public class EjemploMensaje { public static void main(String[] args) { Mensaje msj = new MensajeFormal("Necesito los diagramas", "James Gosling", "Rod Johnson", true);
6. Clic derecho del mouse sobre el proyecto ProyectoEjemploMensaje y seleccionar Run, observe el resultado en la salida de consola (Tab Output): run: Correo Urgente!
Estimado Rod Johnson:
Necesito los diagramas
Saluda atentamente,
James Gosling Fri Oct 01 16:29:15 CLT 2010 BUILD SUCCESSFUL (total time: 1 second)
Ejercicio 6: La clase con el modificador Final. Utilizando el modificador final se puede declarar que una clase es final, que no puede tener subclases. En un atributo: no modificable-> Contante. En un mtodo no se puede sobrescribir en un heredero. En una clase no se puede heredar. Existen (al menos) dos razones por las que se podra querer hacer esto: razones de seguridad y razones de diseo. 1. Crear un proyecto Netbeans: Java Application Seleccionar File desde el men superior y seleccionar New Project. Seleccionar Java bajo Categories, y Seleccionar Java Application bajo Projects. Clic Next Bajo el panel Name and Location, para el Nombre del Proyecto (Project Name), ingrese ProyectoEjemploClaseFinal. Este es el nombre que se le dar al proyecto. Para el campo Create Main Class, ingresar EjemploClaseFinal. Esto es para generar la clase autnoma EjemploClaseFinal.java, que contendr el mtodo main (...). Clic Finish.
2. Creando la clase java Persona: Clic derecho en el proyecto ProyectoEjemploClaseFinal y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Persona Clic Finish. Observe que se crea la clase Persona.java y es desplegada en el editor de cdigo del IDE.
3. Modifique la clase Persona.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. // Hacemos que la clase Persona sea final public final class Persona { public Persona() { } }
4. Creando la clase java Profesor: Clic derecho en el proyecto ProyectoEjemploClaseFinal y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Profesor Clic Finish. Observe que se crea la clase Profesor.java y es desplegada en el editor de cdigo del IDE. Modifique la clase Profesor.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. public class Profesor extends Persona {
Ejercicio 7: El mtodo Final, un mtodo final no se puede sobrescribir en un heredero.
1. Crear un proyecto Netbeans: Java Application Seleccionar File desde el men superior y seleccionar New Project. Seleccionar Java bajo Categories, y Seleccionar Java Application bajo Projects. Clic Next Bajo el panel Name and Location, para el Nombre del Proyecto (Project Name), ingrese ProyectoEjemploMetodoFinal. Este es el nombre que se le dar al proyecto. Para el campo Create Main Class, ingresar EjemploMetodoFinal. Esto es para generar la clase autnoma EjemploMetodoFinal.java, que contendr el mtodo main (...). Clic Finish.
2. Creando la clase java Persona: Clic derecho en el proyecto ProyectoEjemploMetodoFinal y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Persona Clic Finish. Observe que se crea la clase Persona.java y es desplegada en el editor de cdigo del IDE.
3. Modifique la clase Persona.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. public class Persona { public Persona() { }
// algunImportanteMetodo() es un mtodo final public final void algunImportanteMetodo(){ } }
4. Creando la clase java Profesor: Clic derecho en el proyecto ProyectoEjemploMetodoFinal y seleccionamos New->Java Class. Observe que aparece la ventana para crear una clase Java: New Java Class Para el nombre de la case (Class Name), ingrese Profesor Clic Finish. Observe que se crea la clase Profesor.java y es desplegada en el editor de cdigo del IDE. Modifique la clase Profesor.java como se muestra en el Cdigo de abajo, poner especial atencin en los comentarios resaltados con negrita. public class Profesor extends Persona {
public Profesor() { }
// sobre-escribe el mtodo final algunImportanteMetodo() de la clase Persona @Override public void algunImportanteMetodo(){ } }
En esta prctica de laboratorio vimos los conceptos que hay detrs de la herencia de clases. Aprendimos a crear clases que hereden o extienden de otra clase, tambin realizamos ejemplos concretos de la sobre-escritura de mtodos, donde una clase hija remplaza o modifica el mtodo de la sper clase o padre. Finalmente aprendimos el concepto de modificadores final en las clases y en mtodos.
Enva tus consultas a los foros! Aqu es cuando debes sacarte todas las dudas haciendo consultas en los foros correspondientes AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Herencia 40