Unidad 4. Herencia y Polimorfismo
Unidad 4. Herencia y Polimorfismo
Unidad 4. Herencia y Polimorfismo
ACAYUCAN.
4.1- CONCEPTO DE HERENCIA Y POLIMORFISMO EPTO DE HERENCIA Y
POLIMORFISMO
Herencia
La subclase heredara todos los atributos y los métodos que fueron definidos en
la clase padre. Si necesitamos cambiar algún método, se puede sobrescribir el
comportamiento en nuestra subclase; utilizando el mismo nombre y los mismos
argumentos del método que se encuentra en la subclase. O bien si se requiere
crear un nuevo método lo podemos incluir en nuestra subclase.
Una clase puede heredar atributos por dos superclases (clases padres). La
herencia múltiple puede ser usada para agrupar atributos y métodos de
distintas clases en una sola.
Polimorfismo
- Sobrecarga:
Es cuando existen funciones con el mismo nombre, con funcionalidad similar;
en clases que son completamente independientes una de la otra.
- Paramétrico:
-Inclusión:
Es cuando se puede llamar a un método sin tener que conocer su tipo, así no
se toma en cuenta los detalles de las clases especializadas, utilizando una
interfaz común.
Clase Base
Una clase base es aquella que no dependen ninguno de sus atributos u objetos
de la clase de alguna otra clase, se podría decir que en términos de herencia,
seria la clase padre, la clase que se mantiene fija, en el aspecto de herencia.
Es también por así llamarlo la clase principal de un programa, seria la clase
primaria sin incluir la clase main en donde se corre todo el programa en si.
class Persona(object):
self.nombre = nombre
self.apellido = apellido
self.sexo = sexo
def __str__(self):
self.apellido, self.getGenero(self.sexo))
return mensaje
genero = ('Masculino','Femenino')
if sexo == "M":
return genero[0]
return genero[1]
else:
return "Desconocido"
En el ejemplo previo, es donde empieza a crear una clase (lo hace con la
palabra class). La segunda palabra Persona es el nombre de la clase. La
tercera palabra que se encuentra dentro de los paréntesis este hace referencia
al objeto object, usando para indicar la clase de la cual precede.
La clase Persona tiene los métodos __init__, __str__, hablar y getGenero. Sus
atributos son cedula, nombre, apellido y sexo.
public class A
public A() { }
public class B : A
public B() { }
La nueva clase (la clase derivada) obtiene todos los datos no privados y el
comportamiento de la clase base, además de todos los demás datos y
comportamientos que define para sí misma. La nueva clase tiene dos tipos
efectivos: el tipo de la nueva clase y el tipo de la clase que hereda.
4.4. CLASES ABSTRACTAS
Las clases abstractas son aquellas que por sí mismas no se pueden identificar
con algo 'concreto' (no existen como tal en el mundo real), pero sí poseen
determinadas características que son comunes en otras clases que pueden ser
creadas a partir de ellas.
Es decir, en el mundo real no existe un objeto 'vehículo' como tal sino que hay
diferentes tipos de vehículo, pero aunque poseen características comunes y
realizan las mismas acciones lo hacen de forma muy diferente (pudiendo
además realizar otras específicas cada uno de ellos).
Así pues, ya que una clase abstracta no representa algo concreto tampoco
puede ser instanciada (no se puede crear un Objeto a partir de ella) pero sí es
posible crear otras clases en base a su definición.
Main.java:
package EjemplosPOO.ejemplo04;
p.comer();
p.caminar();
p.sonido();
System.out.println("-------------");
g.setNombre("MICIFUS");
g.comer();
g.caminar();
g.sonido();
Expand Code
Perro.java (hereda de Animal):
Expand Code
Gato.java (hereda de Animal):
Expand Code
4.5- INTERFACES
4.5.1 Definición
La Interfaz es como todo puerto que nos permite enviar y recibir señales desde
un componente a otro, teniendo entonces distintas formas de realizar este
envío dispuestas por las Especificaciones Técnicas de cada equipo, o bien
mediante el establecimiento de distintos estándares que permiten la
comunicación.
int multiplicando=CONSTANTE;
En este ejemplo se observa que han de codificarse todos los métodos que
determina la interfaz (metodoAbstracto()), y la validez de las constantes
(CONSTANTE) que define la interfaz durante toda la declaración de la clase.
Variables polimórficas
El polimorfismo hace posible que un usuario pueda añadir nuevas clases a una
jerarquía sin modificar o recompilar el código escrito en términos de la clase
base. Permite programar a nivel de clase base utilizando objetos de clases
derivadas.
Los paquetes Java agrupan las clases en librerías (bibliotecas). Los paquetes
Java se utilizan de forma similar a como se utilizan las librerías en C++, sólo
que en Java se agrupan clases y/o interfaces.
En los paquetes las clases son únicas, comparadas con las de otros paquetes,
y permiten controlar el acceso; esto es, los paquetes proporcionan una forma
de ocultar clases, evitando que otros programas o paquetes accedan a clases
que son de uso exclusivo de una aplicación determinada.
package figuras;
...
}
En este caso, el nombre del paquete es figuras. La clase Circulo se considera
como parte del paquete. La inclusión de nuevas clases en el paquete es
simple, se ha de colocar la misma sentencia al comienzo de los ficheros que
contengan la declaración de las clases. Cada uno de los ficheros que
contengan clases pertenecientes a un mismo paquete, deben incluir la misma
sentencia package, y solamente puede haber una sentencia package por
fichero. La sentencia package colocada el comienzo de un fichero fuente
afectará a todas las clases que se declaren en ese fichero, se pueden
referenciar paquetes precediendo con su nombre la clase que se quiere usar.
También se puede usar la palabra reservada import, si se van a colocar
múltiples referencias a un mismo paquete.
import nombre_paquete.Nombre_Clase;