Clase Abstracta
Básicamente una clase Abstracta es similar a una clase normal, la estructura es prácticamente igual, ya que poseen nombre, atributos y métodos pero para que una clase sea abstracta la condición es que al menos uno de sus métodos sea abstracto (se le agrega la palabra reservada abstract y no se especifica el cuerpo del método).
Algunas características de una clase abstracta son:
Algunas características de una clase abstracta son:
- No puede ser instanciada (no se pueden crear objetos directamente - new ), solo puede ser heredada.
- Si al menos un método de la clase es abstract, esto obliga a que la clase completa sea definida abstract, sin embargo la clase puede tener el resto de métodos no abstractos.
- Los métodos abstract no llevan cuerpo (no llevan los caracteres {}).
Ejemplo:
import javax.swing.JOptionPane;
public abstract class Animal {
String habitat;
public Animal(String habitat) {
super();
this.habitat = habitat;
}
public abstract void Comunicarse();
//JOptionPane.showMessageDialog(null, "El animal hace un sonido");
public String getHabitat() {
return habitat;
}
public void setHabitat(String habitat) {
this.habitat = habitat;
}
}
public abstract class Herviboro extends Animal{
public Herviboro(String habitat) {
super(habitat);
}
}
public abstract class Mamifero extends Animal{
public Mamifero(String habitat) {
super(habitat);
}
}
public abstract class Carnivoro extends Mamifero {
public Carnivoro(String habitat) {
super(habitat);
}
}
import javax.swing.JOptionPane;
public class Gato extends Mamifero{
public Gato(String habitat) {
super(habitat);
}
public void Comunicarse1(){
JOptionPane.showMessageDialog(null, "El gato maulla");
}
@Override
public void Comunicarse() {
JOptionPane.showMessageDialog(null, getHabitat());
}
}
public abstract class Oviparo extends Herviboro {
public Oviparo(String habitat) {
super(habitat);
}
}
import javax.swing.JOptionPane;
public class Perro extends Mamifero{
public Perro(String habitat) {
super(habitat);
}
public String Comunicarse1(){
String mensaje= "El perro ladra";
return mensaje;
}
@Override
public void Comunicarse() {
JOptionPane.showMessageDialog(null, getHabitat());
}
}
import javax.swing.JOptionPane;
public class Pollo extends Oviparo{
String nom;
public Pollo(String nom, String habitat) {
super(habitat);
this.nom= nom;
}
public void Comunicarse(){
JOptionPane.showMessageDialog(null, "El habitat del pollo es la granja");
}
}
public abstract class Ejecutar {
public static void main(String[] args) {
//Animal animal= new Animal();
Perro perro= new Perro("El habitat del perro es urbano");
Gato gato= new Gato("El habitat del gato es urbano");
Pollo pollito = new Pollo(null, null);
//animal.Comunicarse();
perro.Comunicarse();
gato.Comunicarse();
pollito.Comunicarse();
}
}
