Laputa
Clases abstractas e interfaces
Tema 9. Clases abstractas e
interfaces. LPS 2005.
public abstract class Forma {
private int xpos, ypos;
private Color color;
// ...
public abstract void dibuja();
public void setColor(Color c){ /*...*/ };
}
{abstract}
dibuja
setColor
...
public class Circle extends Forma{
private int radio;
// ...
public void dibuja(){/*...*/ };
public void setRadio(int){/*...*/};
}
Otras
Rectangulo
radio
...
altura
anchura
...
setRadio
...
Tema 9. Clases abstractas e
interfaces. LPS 2005.
2
Clases abstractas
xpos
ypos
color
...
Circulo
No proporcionan la implementación de todos sus
métodos
Los métodos no implementados se declaran
como abstract
Una clase con un método abstracto debedeclararse como clase abstracta
Pero una clase puede declararse como
abstracta aunque no tenga ningún método
abstracto
1
Clases abstractas
Forma
Clases cuya descripción es incompleta. Una
clase abstracta declara métodos, pero no
tiene que implementarlos.
public class Rectangle extends Forma{
private int altura, anchura;
// ...
public void dibuja(){ /*...*/ };
public voidsetAltura(int){/*...*/};
}
setAltura
...
Tema 9. Clases abstractas e
interfaces. LPS 2005.
dibuja un
rectángulo
4
Ejemplo clase abstracta
public abstract class Figura {
int x, y;
public void mostrarOrigen() {
System.out.println("x= "+x+" y= "+y);}
public abstract double area(); // No tiene implementación
Triangulo
public abstract double mostrarNombre();
Cuadrado }
publicclass 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; }
publicvoidTema 9. Clases abstractas e
mostrarNombre() { System.out.println(“cuadrado”);}}
Figura
Las subclases de una clase abstracta deben:
Sobreescribir todos los métodos 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
métodosno abstractos.
No se pueden definir constructores abstractos o
métodos estáticos abstractos.
Tema 9. Clases abstractas e
interfaces. LPS 2005.
dibuja un
círculo
Tema 9. Clases abstractas e
interfaces. LPS 2005.
3
Clases abstractas
los métodos
abstactos no
tienen
cuerpo
5
interfaces. LPS 2005.
6
1
Prueba clase abstracta
Interfaces
public classPruebaClaseAbstracta {
public class PruebaClaseAbstracta {
public static void main(String args[]) {
public static void main(String args[]) {
Figura fig;
Figura fig;
Triangulo tri;
Triangulo tri;
Cuadrado cua;
Cuadrado cua;
Sólo declaran comportamiento
Se utiliza la palabra clave interface
Por defecto todos sus métodos son
públicos y abstractos
fig = new Figura(); // error no se puedefig = new Figura(); // error no se puede
//instanciar una clase abstracta
//instanciar una clase abstracta
tri = new Triangulo(4,3);
tri = new Triangulo(4,3);
tri.mostrarOrigen();
tri.mostrarOrigen();
tri.mostrarNombre();
tri.mostrarNombre();
No implementan el comportamiento
fig = tri;
fig = tri;
fig.mostrarNombre();
fig.mostrarNombre();
System.out.println("Area triangulo:"+fig.area());
System.out.println("Area triangulo: "+fig.area());
}
}
}
}
cua = new Cuadrado(5);
cua = new Cuadrado(5);
fig = cua;
fig = cua;
System.out.println("Area cuadrado: "+fig.area());
System.out.println("Area cuadrado: "+fig.area());
Tema 9. Clases abstractas e
interfaces. LPS 2005.
8
Sintaxis
interface NombreInterfaz {
interface NombreInterfaz {
tipo static final...
Regístrate para leer el documento completo.