¿Qué es la herencia y para que la utilizamos? Introducción



Descargar 30,89 Kb.
Fecha de conversión21.07.2017
Tamaño30,89 Kb.
¿Qué es la herencia y para que la utilizamos?

Introducción

Los programas se crean a partir de objetos, los cuales son instancias de clases

Están en la biblioteca de Java y otras las escribe el programador.

La herencia constituye una manera de resolver este problema .Con la herencia podemos usar una clase existente como la base para crear una clase modificada.

Al igual que la descripción de una clase, el automóvil se fabrico a partir de plano que describen a muchos automóviles idénticos.

¿Cómo usar la herencia?

Es una clase para representar a una esfera .Una esfera tiene un radio y una posición en el espacio. Al mostrar una esfera en la pantalla, debe aparecer como un circulo (el método para mostrar una esfera simplemente invoca al método de la biblioteca drawOval). El diámetro de la esfera esta fijo en 20 pixeles. Solo hemos modelado las coordenadas X y Y de una esfera (y no la coordenada z) debido a que vamos a mostrar una representación bidimensional en la pantalla.

Public class Esfera {

Protected int x = 100, yt =100;

X = nuevaX;

}

Public void setX (int nueva Y){



Y= nueva;

}

Public void mostrar (Graphics papel) {



Papel. DrawOval(x, y, 20, 20);

}

}



PROTECTED

Cuando usamos la herencia, prívate es un término demasiado privado y Public es demasiado privado y Public es demasiado Public .Si una clase necesita

Dar a sus subclases acceso a ciertas variables o métodos específicos, pero debe evitar que otras clases acceden a esto, pueden etiquetarlos como protected. En la analogía de una familia, una madre permite a sus descendientes utilizar las llaves de su automóvil, pero a nadie más.

Este método necesita acceso a las variables x y y, que por desgraciar son inaccesibles ya que se etiquetas mejor como protected.

En la antología de una familia, una madre permite a sus descendientes utilizar las llaves de su automóvil, pero a nadie más volvió a las clases ESFERAS.

Private int x, y;

Ese método necesita acceso a las variables x y y, que por desgracia son inaccesible ya que se etiquetaron como prívate. Por lo tanto, para anticiparnos a este posible uso en el futuro, podíamos decidir etiquetas mejor como protected

Protected int x, y;

Su pongamos que declaramos a x y y que prívate, como lo tenía más planeado en un principio .La consecuencia es que hubiera sido imposible reutilizar la clase mediante la herencia .La única opción sería editar la clase y reemplazar la descripción prívate por protected para esos elementos específicos.

Import javax.awt.*;

Public class Burbuja extends Esfera {

Protected int radio = 10;

Public void setTamaño (int tamaño) {

Radio = tamaño;

}

Public void mostrar (Graphics papel) {



Papel.drawOval (x, y, 2 * radio, 2 * radio);

}

}



SUPER

Algunas veces una clase necesita llamar a un método de su superclase inmediata, o de algunas de las clases de nivel superior en el árbol .No hay problema con esto, ya que los métodos de todas las clases en los niveles superiores del árbol de herencia estas disponibles, siempre y cuando estén etiquetadas como Public o protected.

Para corregir este problema hay que anteponer al nombre del método la palabra clave superpón ejemplo, para llamar al método mostrar de una superclase use :

Super .mostrar (papel);

Import java.awt.*;

Public class Globo {

Protected int x, y, radio;

Public Globo ( ) {

X = 10;

Y = 10;


Radio = 20;

}

Public Globo (int xInicial, int yInicial, int radioInicial) {



X = xInicial;

Y = yInicial;

Radio = radioInicial;

}

// Resto de la clase



}

FINAL

La herencia es muy poderosa, pero algunas veces es reconfortante que algunas cosas estén fijas y no se pueden modificar .Por ejemplo, es bueno saber examente que es lo que haces sqrt, que es lo que hace drawLine, etcétera. En la POO siempre existe el peligro de que alguien extienda las clases a las que estas pertenecen y en consecuencia cambie lo que hacen. Estos podrían ser por error o en un intento inadvertido de ser útil.

Como hemos visto desde los primeros capítulos del libro, las variables también se pueden declarar como FINAL. Estos significan también que no podemos cambiar sus valores .Son constantes .por ejemplo:

Final double cmPerInch = 2.54;

Hacer una clase o un método final es una decisión seria, ya que impiden la herencia: una de las herramientas avanzadas de la POO.

Import java .awt.*;

Public abstract class Form as {

Protected Int x, y;

Protected int tamaño;

Public void mover Derecha () ¨c

X = x mas 10;

}

Publicabstract void mostrar (Graphics papel);



}

CLASES ABSTRACTAS

Un programa que mantienen formas graficas de todos tipos y tamaños:

Circulo, rectángulos, los cuadrados, triángulos etc. Estas distintas formas, similares a las clases que ya hemos visto.

Cada clase individual hereda estas informaciones comunes .He aquí la forma de describir estas superclases común;

La clase Para describir círculo hereda de la FORMA;

Import java .awt *;

Public class circulo extends Forma {

Public void mostrar (Graphics papel) {

Papel.drawOval(x, y, tamaño, tamaño);

}

}



Es inútil tatar de crear un objeto a partir de la clase FORMA, ya que esta incomompleta .Esta es la razón por la cual se incluye la palabra clave abstracta en el encabezado de la clase FORMA; el compilador impediría cualquier intento por crear una instancia de esta clase. Se proporciona el método tan solo un encabezado (sin cuerpo).Se describe con la palabra clave abstracta para indicar que cualquier subclase debe proveer una implementación de este método. La clase FORMA se denomina clase abstracta debido a que no existe como una clase complementa, sino que se proporciona implemente para usarse en la herencia.

Las clases abstractas nos permiten aprovechar las características comunes de las clases. Al declarar una clase como abstracta el programador que la utiliza (mediante la herencia) se ve obligado a proveer los métodos faltantes.



Se utiliza el término ABSTRACTO ya que, medida que buscamos cada vez más alto en la

Se utiliza el término ABSTRACTO ya que, medida que buscamos cada vez más alto en barquía de clases, estas se vuelve cada vez más generales o abstractas .En el ejemplo anterior, a clase FORMA es más abstracta y menos concreta que la clase CÍRCULO.


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal