Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
clase, y las interfaces no tienen ninguna implementacion solo las declaraciones de los
miembros que deben constituir la clase que implemente dicha interfaz.
Código:
interface iMiInterfaz
{
int Sumar(int Num1, int Num2);
int Multiplicar(int Num1, int Num2);
}
las clases abstractas pueden tener miembros abstractos y no abstractos (es decir
sobrecargables en las clases que hereden de ella). pero en las interfaces todos los
miembros son implicitamente abstractos, y todos los miembros de la interfaz deben ser
reimplementados en la clase que derive de esta.
Código:
abstract class MiClaseAbstracta
{
public int Suma(int Num1, int Num2)
{
return Num1 + Num2;
}
CLASES ABSTRACTAS
Esta no permite crear objetos, se utiliza para que otras clases hereden de ella, "provocando" la
reutilización de código, ósea que no se puede instanciar, y se usa únicamente para definir
subclases.
Una clase es abstracta cuando uno de sus métodos no tiene implementación y se usa cuando
queremos definir una abstracción que englobe objetos de varios tipos y queremos hacer uso del
polimorfismo.
Una de las características más útiles de cualquier lenguaje orientado a objetos es la posibilidad de
declarar clases que definen como se utiliza solamente, sin tener que implementar métodos. esto es
muy útil cuando la implementación es específica para cada usuario, pero todos los usuarios tienen
que utilizar los mismos métodos.
EJEMPLO
abstract class FiguraGeometrica {
abstract void dibujar();
}
¿Qué es un interface?
Un interface es una colección de declaraciones de métodos (sin definirlos) y
también puede incluir constantes.
Una clase solamente puede derivar extends de una clase base, pero puede
implementar varios interfaces. Los nombres de los interfaces se colocan
separados por una coma después de la palabra reservada implements.
En el lenguaje Java solamente existe la herencia simple, pero las clases pueden
implementar interfaces. Vamos a ver en este apartado que la importancia de los
interfaces no estriba en resolver los problemas inherentes a la herencia múltiple
sin forzar relaciones jerárquicas, sino es el de incrementar el polimorfismo del
lenguaje más allá del que proporciona la herencia simple.
Para explicar este aspecto importante y novedoso del lenguaje Java adaptaremos
los ejemplos que aparecen en el artículo del Bill Venners "Designing with
interfaces" publicado en Java World (www.javaWorld.com) en Diciembre de
1998. Comparemos la herencia simple mediante un ejemplo similar al de la
jerarquía de las figuras planas, con los interfaces.
Herencia simple
polimorfismo: Animal.java, PoliApp.java
El polimorfismo nos ayuda a hacer el programa más flexible, por que en el futuro
podemos añadir nuevas clases derivadas de Animal, sin que cambie para nada el
método hazleHablar. Como ejercicio, se sugiere al lector añadir la clase Pajaro a
la jerarquía, y pasar un objeto de dicha clase a la función hazleHablar para que se
imprima ¡pio, pio, pio ..!.
Interfaces
polimorfismo1: Parlanchin.java, Animal.java, Reloj.java, PoliApp.java
INTERFAZ
Una interfaz define una serie de métodos que debe implementar una clase. es decir, una interfaz
es una colección de métodos sin cuerpo, contiene únicamente lo que se denomina signatura del
método.
boolean b;
boolean b;
boolean.true;
boolean.false;
boolean b.booleanvalue();
string b.tostring();
boolean b.equals( object obj );
Saludos a todos, en esta nueva aportación quiero compartir con ustedes un tema que
cuando se está iniciando en el aprendizaje de la programación orientada a objetos no se
encuentra en ningún libro o bien, pocos instructores lo mencionan -debo admitir que
cuando impartí la materia de Introducción a la Programación Orientada a Objetos en el
Instituto Tecnológico de León ni siquiera lo mencioné- y me refiero a ¿Cuándo y por qué
usar clases abstractas o interfaces?
El concepto de clases abstractas e interfaces puede ser un poco confuso para los
principiantes en la programación orientada a objetos ya que una clase abstracta sin
ninguna implementación se ve cómo una interface, sin embargo existen muchas
diferencias y similitudes entre ellas.
¿Qué es una clase abstracta?
Una clase abstracta es una clase que no puede ser instanciada y que debe ser heredada.
Una clase puede implementarse en su totalidad, pero lo más habitual es que se
implemente parcialmente o no se implemente en absoluto, encapsulando funcionalidad
común para clases heredadas. Para información más detallada, vea Clases abstractas.
¿Qué es una Interface?
Una interface describe un grupo de comportamientos relacionados que pueden
pertenecer a cualquier clase o estructura. Las interfaces contienen las firmas de métodos,
propiedades, eventos o indizadores. La implementación de los miembros se hace en la
clase o la estructura que implementa la interfaz. Para información más detallada,
veaInterfaces.
Diferencias y Similitudes
A continuación extraigo parte de una tabla del artículo Abstract Class versus Interface en la que se
describen las diferencias y similitudes que existen entre las clases abstractas y las interfaces: