You are on page 1of 4

Clases abstractas Clases abstractas e interfaces

clase abstracta declara mtodos, pero no tiene que implementarlos.

No proporcionan la implementacin de todos sus mtodos Los mtodos no implementados se declaran como abstract Una clase con un mtodo abstracto debe declararse como clase abstracta Pero una clase puede declararse como abstracta aunque no tenga ningn mtodo abstracto

Java

Arrays y Cadenas

Java

Arrays y Cadenas

Clases abstractas
Forma xpos ypos color ... dibuja setColor ... {abstract}

Clases abstractas
public abstract class Forma { private int xpos, ypos; private Color color; // ... public abstract void dibuja(); public void setColor(Color c){ /*...*/ }; } public class Circle extends Forma{ private int radio; // ... public void dibuja(){ /*...*/ }; public void setRadio(int){/*...*/}; } public class Rectangle extends Forma{ private int altura, anchura; // ... public void dibuja(){ /*...*/ }; public void setAltura(int){/*...*/}; } 3 Java Arrays y Cadenas

los mtodos abstactos no tienen cuerpo dibuja un crculo

Otras
Circulo radio ... setRadio ... Rectangulo altura anchura ... setAltura ...

dibuja un rectngulo

Java

Arrays y Cadenas

Clases abstractas

Ejemplo clase abstracta


Figura
public abstract class Figura { int x, y; System.out.println("x= "+x+" y= "+y);} public abstract double area(); // No tiene implementacin public abstract double mostrarNombre (); public class Triangulo extends Figura { protected int base, altura; public Triangulo (int ba, int al) { base=ba; altura=al; } public double area() { return base* altura/2; } public void mostrarNombre () { System.out.println(triangulo); } } public class Cuadrado extends Figura { protected int lado ; public Cuadrado (int lado) { this.lado =lado; } public double area() { return lado*lado; } public void mostrarNombre () { System.out.println(cuadrado);}}
5 Java Arrays y Cadenas 6

Las subclases de una clase abstracta deben: Sobreescribir todos los mtodos abstractos de la superclase, o bien Ser declaradas como clases abstractas Una clase abstracta no puede instanciarse No se pueden crear objetos de una clase abstracta Una clase abstracta puede incluir variables y mtodos no abstractos. No se pueden definir constructores abstractos o mtodos estticos abstractos.

Triangulo Cuadrado }

Java

Arrays y Cadenas

Prueba clase abstracta


public class PruebaClaseAbstracta { public static static void void main(String main(String args[]) args[]) { { public Figura fig; Triangulo tri; Triangulo tri; Cuadrado cua; cua; Cuadrado fig = new Figura(); // error no se puede //instanciar una una clase clase abstracta abstracta //instanciar tri = = new new Triangulo(4,3); Triangulo(4,3); tri tri.mostrarOrigen (); tri.mostrarNombre(); (); tri.mostrarNombre fig = = tri tri ; fig ; fig.mostrarNombre(); (); fig.mostrarNombre System.out.println("Area triangulo: triangulo: "+fig "+fig .area()); System.out.println("Area .area()); cua = = new new Cuadrado(5); Cuadrado(5); cua fig = = cua cua ; fig ; System.out.println("Area cuadrado: cuadrado: "+fig.area()); "+fig.area()); System.out.println("Area Java Arrays y Cadenas 7

Interfaces
Slo declaran comportamiento

Se utiliza la palabra clave interface pblicos y abstractos


No implementan el comportamiento

Por defecto todos sus atributos son pblicos, constantes y de clase


Por legibilidad normalmente los declaramos

} } } }

Java

Arrays y Cadenas

Interfaces
Permite simular algunos aspectos de la herencia mltiple

Declaracin de interfaces
Sintaxis
interface NombreInterfaz NombreInterfaz { { interface tipo static static final final NOMBRECONSTANTE1 NOMBRECONSTANTE1 = = valor; valor; tipo ... ... public tipoDevuelto tipoDevuelto nombreMetodo1( nombreMetodo1(listaParmetros); listaParmetros); public ... ... } } class NombreClase implements Implementacin del [, NombreInterfaz2 ..] { NombreInterfaz1 interfaz en una clase NombreInterfaz2 ..] // declaracin [, atributos y mtodos de{ la clase ... Una clase puedeatributos implementar // declaracin y } variosde interfaces mtodos la clase
9

Define un tipo de datos Posibilita el enlace di nmico

Otras clases pueden implementar un interfaz

Cualquier clase que implemente un interfaz debe definir todos los mtodos de dicho interfaz
Debe proporcionar la implementacin de dichos mtodos

Si la clase no proporciona la implementacin para todos los mtodos del interfaz debe ser declarada como abstracta
Java Arrays y Cadenas

... }

Java

Arrays y Cadenas

10

interfaces
Programador es un Asalariado

Ejemplo de interfaz
public interface interface Nombrable Nombrable { { public static final final boolean boolean CIERTO CIERTO = = true; true; static public void void mostrarNombre(); mostrarNombre(); public } } public class class Elemento Elemento implements implements Nombrable Nombrable { { public String nombre; nombre; String public Elemento(String Elemento(String nom) nom) { { public nombre = = nom; nom; } } nombre // obligatorio obligatorio implementar implementar mtodo mtodo mostrarNombre mostrarNombre // public void void mostrarNombre(){ mostrarNombre(){ public System.out.println("Nombre: "+nombre); "+nombre); System.out.println("Nombre: if (CIERTO) (CIERTO) if System.out.println("Constante CIERTO CIERTO "); "); System.out.println("Constante Java Arrays y Cadenas 12 }} }}

Asalariado implements Empelado extends Programador


Payable p = new Programmer();

Java

Arrays y Cadenas

11

Uso del interfaz con enlace dinmico


public class class PruebaInterfaz PruebaInterfaz { { public public static static void void main(String main(String args[]) args[]) { { public Elemento elem; elem; Elemento Nombrable inter; inter; Nombrable elem = = new new Elemento(Luis"); Elemento(Luis"); elem elem.mostrarNombre(); elem.mostrarNombre(); // una una referencia referencia a a interfaz interfaz puede puede // //utilizarse con con una una instancia instancia de de //utilizarse // una una clase clase que que lo lo implemente implemente // inter = = elem; elem; inter inter.mostrarNombre(); } inter.mostrarNombre(); }
Java Arrays y Cadenas 13

Ejemplo de interfaces
Humano Actor Canino

Persona Person ... act() ...

Perro

...

} }

Java

Arrays y Cadenas

14

Ejemplo de interfaces
interface Actor void actua(); }

Extensin de interfaces
Se puede definir un interface que especialice a otro interface mediante

sin cuerpo

extends
Actor { public void actua(){ /*...*/}; //... } public class Perro extends Canino implements Actor { public void actua(){ /*...*/}; //... }
Java Arrays y Cadenas 15

Es similar a la herencia de clases

Java

Arrays y Cadenas

16

Extensin de interfaces
No obstante un interface puede extender a varios interfaces a la vez

Rsumen de interfaces
Las interfaces sirven para:
una o ms clases. Determinar la interface de programacin de un objeto, sin mostrar el cuerpo de la clase. Capturar similitudes entre clases no relacionadas, sin forzar una relacin entre ellas. Describir objetos "tipo -funcin", que podrn ser utilizados como argumentos al invocar mtodos sobre objetos.
Java Arrays y Cadenas 18

Aqu la herencia mltiple no plantea problemas porque no se hereda cdigo

interface ElementoOrdenado ElementoOrdenado extends extends interface Comparable, Cloneable, Cloneable, java.io.Serializable java.io.Serializable { { Comparable, // miembros miembros y y mtodos mtodos propios propios del del interfaz interfaz // //ElementoOrdenado //ElementoOrdenado ..... ..... } }
Java Arrays y Cadenas 17

Rsumen de interfaces
Tipo herencia nstanciable mplementa datos Class extends (simple) yes metodos Se permiten Abstract Class extends (simple) no algn mtodo Se permiten Interface implements (multiple) no nada no se permiten

Java

Arrays y Cadenas

19

You might also like