package com.trifulcas.clases;
// Una clase abstracta no se puede instanciar
// Puede tener propiedades y métodos no abstractos
// Puede tener métodos abstractos
abstract public class Figura {
private String nombre;
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
// Puede tener métodos abstractos
// Un contrato para que las clases derivadas implementen el método
// Los métodos abstractos no incorporan código
abstract public double area();
}
class Cuadrado extends Figura{
private int lado;
public Cuadrado(int lado) {
super();
this.lado = lado;
setNombre("cuadrado");
}
@Override
public double area() {
return lado*lado;
}
}
class Circulo extends Figura{
private int radio;
public Circulo(int radio) {
super();
this.radio = radio;
setNombre("círculo");
}
@Override
public double area() {
return Math.PI*radio*radio;
}
}
Uso:
Figura[] ejercicios= {new Cuadrado(2),new Circulo(3),new Cuadrado(4)};
for(Figura f:ejercicios) {
System.out.println(f.getNombre()+" | "+f.area());
}