Вы находитесь на странице: 1из 11

CLASES ABSTRACTAS, INTERFACES, IMPLEMENTS Y EXTENDS.

SANTIAGO GIL SERNA.


LUIS ANDRS GONZALES LOAIZA.

Bruno Alberto Meja.


Doc. Programacin orientada a objetos.

UNIVERSIDAD CATLICA DE ORIENTE.


INGENIERA DE SISTEMAS.
RIONEGRO-ANTIOQUIA.
2016
1. Clases abstractas, caractersticas y usabilidad.

Una clase abstracta es aquella cuya descripcin es incompleta, declara


mtodos, pero no tiene que implementarlos, slo se una para definir
subclases; esta clase no se puede instanciar pero si se puede heredar y
las clases hijas sern las encargadas de agregar la funcionalidad a los
mtodos abstractos. Si no lo hacen as, las clases hijas deben ser
tambin abstractas.
Utilizamos una clase abstracta cuando se desea definir una abstraccin
que englobe objetos de distintos tipos y se quiere hacer uso del
polimorfismo (Capacidad que tienen los objetos de una clase de
responder al mismo mensaje o evento en funcin de los parmetros
utilizados durante su invocacin. Un objeto polimrfico es una entidad
que puede contener valores de diferentes tipos durante la ejecucin del
programa. )
Una clase abstracta toma las siguientes caractersticas:
Una clase Abstracta No puede ser instanciada (no se pueden crear
objetos directamente - new), solo puede ser heredada.
Si al menos un mtodo de la clase es abstract, esto obliga a que la
clase completa sea definida abstract, sin embargo la clase puede
tener el resto de mtodos no abstractos.
Los mtodos abstract no llevan cuerpo (no llevan los caracteres
{}).
La primera subclase concreta que herede de una clase abstract
debe implementar todos los mtodos de la superclase.
Cundo Utilizarlas?
Al trabajar clases y mtodos abstractos, no solo mantenemos nuestra
aplicacin ms organizada y fcil de entender sino que tambin al no
poder instanciar una clase abstracta nos aseguramos de que las
propiedades especficas de esta, solo estn disponibles para sus clases
hijas.
Con las Clases Abstractas lo que hacemos es definir un proceso general
que luego ser implementado por las clases concretas que hereden
dichas funcionalidades; es decir, si tengo una clase que hereda de otra
Abstracta, estoy obligado a poner en el cdigo, todos los mtodos
abstractos de la clase padre, pero esta vez sern mtodos concretos y
su funcionalidad o cuerpo ser definido dependiendo de para que la
necesite, de esa manera si tengo otra clase que tambin hereda del

mismo padre, implementar


comportamiento distinto.

el

mismo

mtodo

pero

con

un

Ejemplo.
Figura es una clase abstracta porque no tiene sentido calcular su rea,
pero su la de un cuadrado o un crculo. Si una subclase de Figura no
redefine rea (), deber declararse tambin como abstracta.

2. Interfaces, caractersticas y usabilidad.

Un interfaz es una lista de acciones que puede llevar a cabo un


determinado objeto.
En una interfaz slo existe el prototipo de una funcin, no su cdigo. En
muchas ocasiones un interfaz es empleado para definir un
comportamiento, que posteriormente ser implementado por diversas
clases, que podran no tener nada que ver entre ellas, pero que todas se
comportarn igual de cara al interfaz. Es decir, todas tendrn las
funciones indicadas por el interfaz.
Caractersticas:
Las interfaces son una forma de especificar qu debe hacer una
clase sin especificar el cmo.
Las interfaces no son clases, slo especifican requerimientos para
la clase que las implementa o, desde su uso, los servicios para la

funcin que manipula un objeto que se dice cumplir con la


interfaz.
En la declaracin de una interfaz, lo nico que puede aparecer son
declaraciones de mtodos (su nombre y signatura, sin su
implementacin) y definiciones de constantes simblicas.
Una interfaz no encapsula datos, slo define cules son los
mtodos que han de implementar los objetos de aquellas clases
que implementen la interfaz.
En java, para indicar que una clase implementa una interfaz se
utiliza la palabra reservada implements.

Cmo utilizarlas?
Debemos crear una clase que implementa la interfaz.
Implementarla implementar cada uno de los mtodos de la
interfaz.
Podemos definir mtodos que usen como parmetro objetos que
implementen la interfaz. Basta una el nombre de la interfaz como
el tipo del parmetro.
Luego, las instancias de una clase que implemente la Interfaz,
pueden tomar el lugar del argumento donde se espere alguien que
implemente la interfaz.

Ejemplo.
En el ejemplo anterior, si no estuvisemos interesados en conocer la
posicin de una Figura, podramos eliminar por completo su
implementacin y convertir Figura en una interfaz:

3. Las directivas Implements y Extends en java.

Cuando se quiere crear una subclase de una clase (herencia) existente


se utiliza la palabra extends y cuando se quiere implent una interfaz
(recuerde las interfaces son diferentes de las clases), se utiliza la
palabra clave implementos.
EJEMPLO DE HERENCIA EN JAVA. EXTENDS Y SUPER.
Java permite el empleo de la herencia, caracterstica muy potente
que permite definir una clase tomando como base a otra clase ya
existente. Esto es una de las bases de la reutilizacin de cdigo,
en lugar de copiar y pegar. En java, como ya vimos la herencia se
especifica agregando la clasula extends despus del nombre de
la clase. En la clusula extends indicaremos el nombre de la clase
base de la cul queremos heredar. Al heredar de una clase base
heredaremos tanto los atributos como los mtodos, mientras que
los constructores son utilizados, pero no heredados.
Ejemplo.

//Cdigo de la clase Persona ejemplo aprenderaprogramar.com


public class Persona {
private String nombre;
private String apellidos;
private int edad;
//Constructor
public Persona (String nombre, String apellidos, int edad) {
this.nombre = nombre;
this.apellidos = apellidos;

this.edad = edad;
}
//Mtodos
public String getNombre () { return nombre; }
public String getApellidos () { return apellidos; }
public int getEdad () { return edad; }
} //Cierre de la clase

//Cdigo de la clase profesor, subclase de la clase Persona ejemplo aprenderaprogramar.com


public class Profesor extends Persona {
//Campos especficos de la subclase.
private String IdProfesor;
//Constructor de la subclase: incluimos como parmetros al menos los del constructor de la
superclase
public Profesor (String nombre, String apellidos, int edad) {
super(nombre, apellidos, edad);
IdProfesor = "Unknown"; } //Cierre del constructor
//Mtodos especficos de la subclase
public void setIdProfesor (String IdProfesor) { this.IdProfesor = IdProfesor; }
public String getIdProfesor () { return IdProfesor; }
public void mostrarNombreApellidosYCarnet() {
// nombre = "Paco"; Si tratramos de acceder directamente a un campo privado de la
superclase, salta un error
// S podemos acceder a variables de instancia a travs de los mtodos de acceso pblicos
de la superclase
System.out.println ("Profesor de nombre: " + getNombre() + " " + getApellidos() +
" con Id de profesor: " + getIdProfesor() ); }
} //Cierre de la clase

//Cdigo de test aprenderaprogramar.com


public class TestHerencia1 {
public static void main (String [ ] Args) {
Profesor profesor1 = new Profesor ("Juan", "Hernndez Garca", 33);
profesor1.setIdProfesor("Prof 22-387-11");
profesor1.mostrarNombreApellidosYCarnet();}
} //Cierre de la clase

CONCEPTO DE INTERFACE Y HERENCIA MLTIPLE EN JAVA.


IMPLEMENTS.
Cuando se implementa una interface se est aceptando una
especie de contrato definido en la interface. Esto significa que
ests aceptando el proveer implementaciones legales para cada
mtodo definido en la interface.

Ejemplo.
Interface MyInterface
{
Public void method1();
public void method2();
}
class XYZ implements MyInterface
{
public void method1()
{
System.out.println("implementation of method1");
}
public void method2()
{
System.out.println("implementation of method2");
}
public static void main(String arg[])
{
MyInterface obj = new XYZ();
obj. method1();
}
}

4.

CIBERGRAFA.

http://profesores.fi-b.unam.mx/carlos/java/java_basico4_8.html
http://elvex.ugr.es/decsai/java/pdf/AC-interfaces.pdf
http://www.mundojava.net/interfaces.html?
Pg=java_inicial_4_5.html
http://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=668:clases-y-metodosabstractos-en-java-abstract-class-clases-del-api-ejemplos-codigo-yejercicios-cu00695b&catid=68:curso-aprender-programacion-javadesde-cero&Itemid=188
http://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=653:ejemplo-de-herenciaen-java-uso-de-palabras-clave-extends-y-super-constructores-conherencia-cu00686b&catid=68:curso-aprender-programacion-javadesde-cero&Itemid=188
http://beginnersbook.com/2013/05/java-interface/

Вам также может понравиться