Tipos de clases
Clases concretas
Es una clase en donde todo esta definido
Es decir atributos, constructores, métodos
Clases abstractas
● clases cuya descripción es incompleta
● una clase abstracta declara métodos, pero no necesariamente tiene que
implementarlos, es decir no proporciona la implementación de tdos sus
métodos
● Los métodos no implementados se declaran como (abstract)
● Una clase con un método abstracto DEBEN declararse como abstracto; pero
una clase puede declararse como abstracta aunque no tenga métodos
abstractos
Form
xpos
ypos
color
dibuja(); //metodo abstracto
setcolor(int);
Circulo Rectangulo
radio altura
anchura
setRadio()
setAltura
public abstract class Form {
private int xpos, ypos;
private int color;
Form{ Form obj = new Form(); //NO SE pUEDE
abstract void dibuja(); //define un método abstracto
void setColor(int color1){
color=color1;
}
class Circulo extends Form{ class Rectangulo extends Form{
private int radio; private int anchura, altura;
void dibuja(){ void dibuja(){
____ YYYYY
____ VVVV
} }
void setRadio{ void setAltura(){
___ ___
} }
}//Fin de la clase Circulo }//fin de la clase Rectangulo
● Las subclases de una clase abstracta deben
○ sobrescribir todos los métodos abstractos de la superclase o ser declarados como abstractos
● Una clase abstracta NO puede instanciarse → no se pueden crear objetos de
una clase abstracta
● No obstante lo anterior una clase abstracta puede tener constructores
● Una clase abstracta puede incluir variables y métodos no abstractas
public abstract class Figura{
Figura
int x, y;
void mostrarOrigen(){
sop(“x” + x + “y “ + y);
}
abstract double area();
abstract void mostrarNombre();
}
Triangulo Cuadrado
class Triangulo extends Figura{ class Cuadrado extends Figura{
int base, altura; int lado;
Triangulo(int ba, int al){ Cuadrado(int lado){
base = ba; this.lado=lado;
altura=al;
}
}
double area(){
double area(){
return (lado*lado);
return (base*altura)/2;
}
}
void mostrarNombre(){
void mostrarNombre(){
sop (“Cuadrado”);
sop (“Triangulo”);
}
}
}//fin de la clase concreta Triangulo
}//fin de la clase concreta Triangulo
class PruebaAbstracta{
public static void main (String[] args)
{
Figura fig;
Triangulo tri;
Cuadrado cua;
fig = new Figura(); // error no se puede instanciar de clase abstracta
tri=new Triangulo(4,3); //Triangulo tri = new Triangulo(4,3);
tri.mostrarOrigen(); //es un metodo heredado de la superclase}
tri.mostrarNombre(); // de los 2 metodos se ejecuta el de la subclase
fig=tri; // selección de métodos dinámica
fig.mostrarNombre(); //
sop(“Area triangulo” + fig.area());
cua = new Cuadrado(5); fig=cua; sop(“area cuadrado” + fig.area());
}//fin del main
}//fin de la clase PruebaAbstracta