Herencia Y Polimorfismo
Enviado por diego_gonz91 • 6 de Noviembre de 2013 • 1.793 Palabras (8 Páginas) • 402 Visitas
Ejemplos
1.1 Herencia y Polimorfismo
Herencia
A) Creamos un proyecto en nuestro IDE, por ejemplo HerenciayPolimorfismo, tal como lo muestro en la siguiente imagen:
Este proyecto tiene tres clases:
1. Herencia (clase principal)
2. acepta
3. concede
B) La Herencia en java permite que una clase reciba automáticamente las propiedades y los métodos de otra clase.
C) La clase “concede” tiene el siguiente código con un solo método:
package conceptos;
public class concede {
public void estoyEscribiendo(){
System.out.println("Escribo una nota");
}
}
D) Ahora vamos a la clase “acepta” que tiene el siguiente código:
package conceptos;
public class acepta extends concede {
}
La clase concede utiliza la palabra clave “extends” eso quiere decir que automáticamente la clase “acepta” recibe todo lo que le da la clase “concede”.
E) La clase principal crearemos una nueva instancia del tipo “acepta” y nuestra clase principal quedara de la siguiente manera:
package conceptos;
public class Herencia {
public static void main(String[] args) {
acepta herencia = new acepta();
herencia.estoyEscribiendo();
}
}
Si ustedes están realizando este ejemplo con algún IDE, notaran que al escribir “herencia.” tenemos disponible el método “estoyEscribiendo”, pero que sucede si la clase “acepta” no tienen ningún método?, la “magia” esta en la palabra “extends” que esta en “acepta” que le permite heredar de la clase “concede”.
En este caso la clase que proporciona el código es la super clase y la clase que hereda el código es la sub clase.
Al ejecutar(Run) la clase Herencia obtendremos el siguiente resultado:
Escribo una nota
Polimorfismo
Polimorfismo
Mediante el polimorfismo podemos variar las propiedades de un objeto que a heredado de otra clase, veamos esto siguiendo con nuestro código, añado las siguientes líneas :
package conceptos;
public class Herencia {
public static void main(String[] args) {
acepta herencia = new acepta();
concede herenciaDos = new concede();
herencia.estoyEscribiendo();
herenciaDos.estoyEscribiendo();
}
}
Al ejecutar el anterior código nos desplegara dos veces el mensaje:
Escribo una nota
Escribo una nota
Mediante el polimorfismo podemos hacer que la clase “acepta” que es la que extiende a todas las propiedades de “concede” pueda modificar aquello datos que recibe, en nuestro ejemplo haremos lo siguiente:
package conceptos;
public class acepta extends concede {
public void estoyEscribiendo(){
System.out.println("Tu también escribes una nota");
}
}
Este es un ejemplo claro de polimorfismo ya que la clase “acepta” esta heredando todo lo que tiene la clase “concede”, lo que realizamos en esta clase es añadir un polimorfismo y sobre escribir lo que heredamos, es decir tenemos “estoyEscribiendo” que hemos heredado pero estamos sobrescribiendo lo que he heredado, en pocas palabras estoy sobrescribiendo el método que he heredado cambiando el mensaje que voy a desplegar.
Para aclarar un poco mas la idea, voy a realizar un cambio en la clase “concede” de tal manera que quede de la siguiente manera:
package conceptos;
public class concede {
public void estoyEscribiendo(){
System.out.println("Escribo una nota");
}
public void estoyLeyendo(){
System.out.println("Leo un libro");
}
}
Como podrán apreciar he añadido un método mas a la clase concede y la clase principal quedara de la siguiente manera:
package conceptos;
public class Herencia {
public static void main(String[] args) {
acepta herencia = new acepta();
herencia.estoyEscribiendo();
herencia.estoyLeyendo();
}
}
El resultado de ejecutar el código será lo siguiente:
Tu también escribes una nota
Leo un libro
En este caso podemos comprobar como hemos heredado en la clase “acepta” el método “estoyLeyendo” ya que no existe este metodo en la clase “acepta” y hemos sobrescrito el método “estoyEscribiendo”.
Comprobamos por tanto como “acepta” lo que hace es heredar los métodos deja intacto el método “estoyLeyendo” pero modifica el “estoyEscribiendo” poniendo otro mensaje para desplegar.
La clase base
Vamos a poner un ejemplo del segundo tipo, que simule la utilización de liberías de clases para crear un interfaz gráfico de usuario como Windows 3.1 o Windows 95.
Supongamos que tenemos una clase que describe la conducta de una ventana muy simple, aquella que no dispone de título en la parte superior, por tanto no puede desplazarse, pero si cambiar de tamaño actuando con el ratón en los bordes derecho e inferior.
La clase Ventana tendrá los siguientes miembros dato: la posición x e y de la ventana, de su esquina superior izquierda y las dimensiones de la ventana: ancho y alto.
public class Ventana {
protected int x;
protected int y;
protected int ancho;
protected int alto;
public Ventana(int x, int y, int ancho, int alto) {
this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
}
//...
}
Las funciones miembros, además del constructor serán las siguientes: la función mostrar que
...