visita
Clases abstractas e interfaces
Clases cuya descripción es incompleta. Una
clase abstracta declara métodos, pero no
tiene que implementarlos.
n
n
Java
Arrays y Cadenas
1
Clases abstractas
dibuja
setColor
...
public class Circle extends Forma{
private int radio;
// ...
public void dibuja(){ /*...*/ };
public void setRadio(int){/*...*/};
}Otras
Circulo
Rectangulo
altura
anchura
...
setRadio
...
public class Rectangle extends Forma{
private int altura, anchura;
// ...
public void dibuja(){ /*...*/ };
public void setAltura(int){/*...*/};
}
setAltura
...
Java
Arrays y Cadenas
3
Clases abstractas
n
n
n
n
2
Arrays y Cadenas
Java
los métodos
abstactos no
tienen
cuerpo
dibuja uncírculo
dibuja un
rectángulo
Arrays y Cadenas
4
Ejemplo clase abstracta
Las subclases de una clase abstracta deben:
w Sobreescribir todos los métodos abstractos de
la superclase, o bien
w Ser declaradas como clases abstractas
Una clase abstracta no puede instanciarse
w No se pueden crear objetos de una clase
abstracta
Una clase abstracta puede incluir variables y
métodos noabstractos.
No se pueden definir constructores abstractos o
métodos estáticos abstractos.
Java
Arrays y Cadenas
public abstract class Forma {
private int xpos, ypos;
private Color color;
// ...
public abstract void dibuja();
public void setColor(Color c){ /*...*/ };
}
xpos
ypos
color
...
radio
...
Java
Clases abstractas
{abstract}
Forma
No proporcionan laimplementación de todos sus
métodos
w Los métodos no implementados se declaran
como abstract
Una clase con un método abstracto debe
declararse como clase abstracta
w Pero una clase puede declararse como
abstracta aunque no tenga ningún método
abstracto
5
public abstract class Figura {
int x, y;
public void mostrarOrigen () {
System.out.println("x= "+x+" y= "+y);}
public abstract doublearea(); // No tiene implementación
Triangulo
public abstract double mostrarNombre ();
Cuadrado }
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 {
protectedint lado ;
public Cuadrado (int lado) { this.lado =lado; }
public double area() { return lado*lado; }
public void mostrarNombre () { System.out.println(“cuadrado”);}}
Figura
Java
Arrays y Cadenas
6
1
Prueba clase abstracta
Interfaces
public class PruebaClaseAbstracta {
public class PruebaClaseAbstracta {
public static void main(String args[]) {
public static voidmain(String args[]) {
Figura fig;
Figura fig;
Triangulo tri;
Triangulo tri;
Cuadrado cua;
Cuadrado cua;
Sólo declaran comportamiento
n
n
fig = new Figura(); // error no se puede
fig = 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 ();
w No implementan el comportamiento
n
fig = tri ;
fig = tri ;
fig.mostrarNombre ();
fig.mostrarNombre ();
System.out.println("Area triangulo: "+fig .area());
System.out.println("Area triangulo: "+fig .area());
}
}
Se utiliza la palabra clave interface
Por defecto todos sus métodos son
públicos y abstractos
Por defecto todos susatributos son
públicos, constantes y de clase
w Por legibilidad normalmente los declaramos
static y final
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());
Java
Arrays y Cadenas
7
Java
Arrays y Cadenas
8
}
}
Interfaces
Declaración de interfaces...
Regístrate para leer el documento completo.