abstract class CorpoCeleste{
protected float massa;
protected float raio;
protected String tipo = new String();
public CorpoCeleste(float m,float r,String t){
massa = m;
raio = r;
tipo = t;
};
abstract void orbita();
abstract void display();
}
class Planeta extends CorpoCeleste{
public Planeta(float m2, float r2, String t2){
super(m2, r2, t2);
};
void display(){
System.out.println("Massa: " + massa);
System.out.println("Raio: " + raio);
System.out.println("Tipo: " + tipo);
};
void orbita(){
System.out.println("Órbita eliptica");
}
void atmosfera(){
System.out.println("Atmosfera gasosa, composta de Oxigênio, Ozônio, Dioxido de Carbono, dentro outros em menor proporção");
};
}
class Cometa extends CorpoCeleste{
private int orb;
public Cometa(float m3, float r3, String t3){
super(m3, r3, t3);
};
public void Setorb(int orb){
this.orb = orb;
}
void display(){
System.out.println("Massa: " + massa);
System.out.println("Raio: " + raio);
System.out.println("Tipo: " + tipo);
};
void orbita(){
if(orb==1)
System.out.println("Órbita elipsóide");
else
System.out.println("Órbita hiperbólica");}
}
public class Main { /**
* @param args the command line arguments
*/
public static void main(String[] args) { // TODO code application logic here
Planeta Terra = new Planeta(57942,2345,"Planeta Rochoso");
Terra.display();
Terra.atmosfera();
System.out.println("--------------------------");
Cometa Halley = new Cometa(22,55,"Cometa Periódico");
Halley.Setorb(1);
Halley.orbita();
Halley.display(); //Não esqueça que o arquivo com o código-fonte deve ter o mesmo nome
//que a classe que tem o método main. No caso deve ser Main.java
}
}
Bibliografia
Programação de softwares em Java - Érico Casella Tavares de Mattos - Editora Digerati
[2] Comentário enviado por edgurgel em 08/12/2008 - 17:28h
Na implementação em C++, o construtor da classe abstrata deve ser protegido, pois ele só será chamado na hora da construção dos filhos. Não faz sentido ser public.
[3] Comentário enviado por matheusslima em 08/12/2008 - 21:04h
Sou obrigado a discordar de voce, os metodos declarados na classe base sao abstratos(funçao virtual pura) e consequentemente a classe base é uma classe abstrata, e como tal não pode ser instanciada como um objeto. Este é um dos conceitos base do Polimorfismo que você esqueceu.
[4] Comentário enviado por danltmz em 28/09/2009 - 21:34h
"Sou obrigado a discordar de voce, os metodos declarados na classe base sao abstratos(funçao virtual pura) e consequentemente a classe base é uma classe abstrata, e como tal não pode ser instanciada como um objeto. Este é um dos conceitos base do Polimorfismo que você esqueceu. "