Para declarar una clase como abstracta se utiliza la palabra reservada "abstract" por ejemplo
secuela abstract class(){
}
Metodos Abstractos
Tienen las siguientes características:
a) No tiene cuerpo (llaves): sólo consta de signatura con paréntesis.
b) Su signatura termina con un punto y coma.
c) Sólo puede existir dentro de una clase abstracta. De esta forma se evita que haya métodos que no se puedan ejecutar dentro de clases concretas. Visto de otra manera, si una clase incluye un método abstracto, forzosamente la clase será una clase abstracta.
d) Los métodos abstractos forzosamente habrán de estar sobreescritos en las subclases. Si una subclase no implementa un método abstracto de la superclase tiene un método no ejecutable, lo que la fuerza a ser una subclase abstracta. Para que la subclase sea concreta habrá de implementar métodos sobreescritos para todos los métodos abstractos de sus superclases.
Ejemplo:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* @author Personal
*/
public class Abstracto {
static double base;
static double altura;
static String nombre;
static double radio;
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
// TODO code application logic here
List<Figura> figuras = new ArrayList<Figura>();
Triangulo triangulo= new Triangulo(base,altura,nombre);
Circulo circulo=new Circulo(nombre,radio);
//figuras.add(new Figura("Hola"));
int opc;
opc=LecturaScan.leerInt("Ingrese una opcion");
do
{
System.out.println("****MENU DE OPCIONES*****");
System.out.println("1) Ingresar el circulo\n2) Ingresar el triangulo\n3)Mostrar Figura\n4)Salir");
System.out.print("Ingrese la opcion que desee ingresar: ");
switch (opc)
{
case 1:
System.out.println("Ingrese el radio del circulo");
leerDatos();
figuras.add(new Circulo(nombre,radio));
break;
case 2:
System.out.println("Ingrese la base de triangulo: ");
System.out.println("Ingrese la altura del triangulo: ");
leerDatos();
figuras.add(new Triangulo(base, altura,nombre));
break;
case 3:
imprimirSinCasting((ArrayList)figuras);
break;
}
}while(opc!=4);
}
public static void imprimirSinCasting(ArrayList<Figura>lista)
{
for(int i=0;i<lista.size();i++){
lista.get(i).calcularArea();
lista.get(i).imprimir();
}
}
public static void leerDatos()
{
nombre=LecturaScan.leerString("Ingrese el nombre");
}
}