Larback - Retornando conhecimento

Google.

Classes abstratas em java

Uma classe abstrata é desenvolvida para representar entidades e conceitos abstratos. A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementação incompleta - a parte genérica dessa funcionalidade - que é compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas completa a funcionalidade da classe abstrata adicionando um comportamento específico. Uma classe abstrata normalmente possui métodos abstratos. Esses métodos são implementados nas suas classes derivadas concretas com o objetivo de definir o comportamento específico. O método abstrato define apenas a assinatura do método e, portanto, não contém código. Por outro lado, as classes concretas implementam todos os seus métodos e permitem a criação de instâncias. Uma classe concreta não possui métodos abstratos e, geralmente, quando utilizadas neste contexto, são classes derivadas de uma classe abstrata. Agora os exemplos passados em sala:
public abstract class Animal {
	public abstract void emitirSom();
	public void dormir(){
		System.out.println("zzZZzzZZzZzZ...");
	}
	
}

public class Cachorro extends Animal {

		public void dormir(){
			System.out.println("rannnRRRRaRRRR");
		}

		public void emitirSom() {
			System.out.println("au au au RRRRRRGGGG");
			
		}

}

public class Estagiario extends Animal {

	public void emitirSom() {
		System.out.println("Liberando a internet");

	}

	public void usaInternet() {
		System.out.println("orkut, twitter, msn, facebook");
		
	}

}
public class Gato extends Animal {

	public void emitirSom() {
		System.out.println("miau...");

	}

	public void respira() {
		// TODO Auto-generated method stub
		
	}


}
public class Peixe extends Animal {

	public void emitirSom() {
		System.out.println("GLUB GLUB");
	}
	public void dormir(){
		System.out.println("Barulho de peixe dormindo");
	}

}
public class Ronaldo extends Animal {

	public void emitirSom() {
		System.out.println("Brilhando no Curintias");
	}



}

public class PetMain {

	public static void main(String args[]){
		Animal animal = new Estagiario();
		String tipoAnimal;
		tipoAnimal = JOptionPane.showInputDialog("Qual animal você possui?");
		if (tipoAnimal.equals("cachorro"))
			animal = new Cachorro();
		if (tipoAnimal.equals("gato"))
			animal = new Gato();
		if (tipoAnimal.equals("peixe"))
			animal = new Peixe();
		if (tipoAnimal.equals("ronaldo"))
			animal = new Ronaldo();
		animal.emitirSom();
		animal.dormir();
		
	}
}