Las clases y métodos abstractos llevan la palabra clave abstract. Es importante que tengas en cuenta que no pueden llevar el modificador abstract:
- los constructores
- los métodos estáticos
- los métodos privados
Ejemplo 1.
La clase abstracta Mascota declara un método abstracto hablar que deberá ser redefinido por las subclases Gato, Perro y Pato. Observa que la clase Mascota solo se está utilizando para declarar el método hablar, de modo que las clases hijas la puedan usar.
/**
* Abstract class Mascota - Representa una mascota
*/
public abstract class Mascota
{
/**
* Método abstracto hablar para las mascotas
*/
abstract public void hablar();
} //fin de la clase Mascota
/**
* La clase Gato que hereda de la clase Mascota.
*/
public class Gato extends Mascota
{
/**
* Implementación del método hablar
*/
public void hablar() {
System.out.println( "Meow" );
} // fin del método hablar
} // fin de la clase Gato
/**
* La clase Perro que hereda de la clase Mascota.
*/
public class Perro extends Mascota
{
/**
* Implementación del método hablar
*/
public void hablar() {
System.out.println( "Woof" );
} // fin del método hablar
} // fin de la clase Perro
/**
* La clase Pato que hereda de la clase Mascota.
*/
public class Pato extends Mascota
{
/**
* Implementación del método hablar
*/
public void hablar() {
System.out.println( "Quack" );
} // fin del método hablar
} // fin de la clase Pato
/**
* Clase controladora para los objetos Gato, Perro, Pato.
*
*/
public class Granja
{
/**
* Método principal de la aplicación
*/
public static void main( String[] args )
{
Mascota[] misMascotas = new Mascota[4];
misMascotas[0] = new Pato();
misMascotas[1] = new Perro();
misMascotas[2] = new Gato();
misMascotas[3] = new Pato();
for( int i = 0; i < misMascotas.length; i++ )
misMascotas[i].hablar();
} //fin del método main
} //fin de la clase Granja
Ejemplo 2.
La clase abstracta Producto incluye un método abstracto imprimirDatos. Observa el uso de la palabra clave abstract antes del nombre de la clase a fin de informar al compilador de Java que la clase incluye un método abstracto, o más. En virtud de que la clase abstracta no define todos sus métodos no se pueden crear instancias de la clase Producto.
/**
* Abstract class Producto - Representa el producto de una tienda
*
*/
public abstract class Producto
{
// variables de instancia
protected double precioVenta;
protected double costoFabrica;
protected String nombreProducto;
/**
* Constructor para Producto
*
* @param nombre El nombre del producto
* @param precioVenta El precio de venta del producto
* @param costoFabrica El costo de fábrica del producto
*/
public Producto( String nombre, double precio, double costo )
{
nombreProducto = nombre;
precioVenta = precio;
costoFabrica = costo;
} // fin del constructor Producto
/**
* Método abstracto para imprimirDatos
*/
public abstract String imprimirDatos();
} // fin de la clase Producto
Observa que las clases Libro y DVD que extienden de la clase abstracta Producto e implementan el método abstracto imprimirDatos.
/**
* Clase Libro que hereda de la clase Producto.
*/
public class Libro extends Producto
{
/**
* Constructor para los objetos de la clase Libro
* @param titulo El título del libro
* @param precio El precio de venta del libro
* @param costo El costo de fábrica del libro
*/
public Libro( String titulo, double precio, double costo )
{
super( titulo, precio, costo );
}
/**
* Imprime los datos asociados con el libro
*
* @return los datos del libro en un String
*/
public String imprimirDatos()
{
return "Libro: " + nombreProducto + "\tPrecio: $" + precioVenta;
} // fin del método imprimirDatos
} // fin de la clase Libro
/**
* Clase Libro que hereda de la clase Producto.
*/
public class DVD extends Producto
{
/**
* Constructor para los objetos de la clase DVD
* @param titulo El título del DVD
* @param precio El precio de venta del DVD
* @param costo El costo de fábrica del DVD
*/
public DVD( String titulo, double precio, double costo )
{
super( titulo, precio, costo );
}
/**
* Imprime los datos asociados con el DVD
*
* @return los datos del DVD en un String
*/
public String imprimirDatos()
{
return "DVD: " + nombreProducto + "\tPrecio: $" + precioVenta;
} //fin del método imprimirDatos
} //fin de la clase DVD
/**
* Clase controladora para los objetos de DVD y Libros.
*/
public class PruebaProducto
{
/**
* Método principal de la aplicación
*/
public static void main( String[] args )
{
Libro miLibro = new Libro( "Biblioteca del programador", 54.95, 39.95 );
DVD miDVD = new DVD( "Curso multimedia de Java", 29.95, 19.95 );
System.out.println( "Los datos de mis productos." );
System.out.println( miLibro.imprimirDatos() );
System.out.println( miDVD.imprimirDatos() );
} //fin del método main
} //fin de la clase PruebaProducto
Véase:

:V
ResponderEliminar:v
ResponderEliminar:v Gracias poe la explicacion
ResponderEliminarGracias a resultado mis dudas...
ResponderEliminar