[RESOLVIDO]Polimorfismo

Bem pessoal, sou novo aqui e espero que alguem me ajude. Tenho esse trabalho pra fazer.

Um serviço de envio de mensagens funciona com telegramas e e-mail. Todas as mensagens tem o nome do remetente, nome do destinatario e texto. Os telegramas possuem os seguintes dados do endereço de destino: nome da rua, número, bairro, cidade e estado. Já os e-mails possuem nome do usuário e domínio de Internet (ex. gmail.com).
Modele e implemente estas classes usando herança.
Construa uma classe Correio, onde o usuário cria telegramas e e-mails que ficam armazenados em um vetor.
A classe correio deve oferecer a funcionalidade de imprimir na tela a relação de mensagens a serem enviadas. Para telegramas o endereço é a concatenação dos dados do endereço de destino. Já para os e-mails o endereço de destino é formado pelo nome do usuário concatenado com um arroba (@) concatenado com o domínio de Internet.

Ja fiz grande parte dele, mas nao estou conseguindo terminar. Minha dúvida esta na Classe teste…como vou chamar o metodo “send()” da classe correio???

//***Classe Mensagens.

public class Mensagens {

private String nomeDestinatario;
private String nomeRemetente;
private String texto;

//***contrutor com parametros.
public Mensagens(String nomeDestinatario, String nomeRemetente, String texto){
	this.nomeDestinatario = nomeDestinatario;
	this.nomeRemetente = nomeRemetente;
	this.texto = texto;
}


//***getters e setters
public String getNomeDestinatario() {
	return nomeDestinatario;
}
public void setNomeDestinatario(String nomeDestinatario) {
	this.nomeDestinatario = nomeDestinatario;
}
public String getNomeRemetente() {
	return nomeRemetente;
}
public void setNomeRemetente(String nomeRemetente) {
	this.nomeRemetente = nomeRemetente;
}
public String getTexto() {
	return texto;
}
public void setTexto(String texto) {
	this.texto = texto;
}

//***metodo para imprimir os dados
public String TodosDados(){
return "\nRemetente: " + nomeRemetente + "\nDestinatário: " + nomeDestinatario +
"\nTexto: " + texto;
}
}

//***Classe E-mail extends Mensagens

public class E_mail extends Mensagens {

private String usuario;
private String dominio;

//***construtor com parametros
public E_mail(String nomeDestinatario, String nomeRemetente, 
		String texto, String usuario, String dominio){
	super(nomeDestinatario, nomeRemetente, texto);
	this.usuario = usuario;
	this.dominio = dominio;
}

//***getters e setters
public String getDominio() {
	return dominio;
}
public void setDominio(String dominio) {
	this.dominio = dominio;
}
public String getUsuario() {
	return usuario;
}
public void setUsuario(String usuario) {
	this.usuario = usuario;
}	

// ***metodo para imprimir os dados

public String TodosDados(){
	return "\nRemetente: " + getNomeRemetente()+ "\nDestinatário: " + 
		getNomeDestinatario() +	"\nE-mail: " + usuario + "@" + dominio + "\nTexto: " +
			getTexto();
}

}

//***Classe Telegrama extends Mensagens

public class Telegrama extends Mensagens{

private String rua;
private int numero;
private String bairro;
private String cidade;
private double cep;

//***contrutor com parametros
public Telegrama(String nomeDestinatario, String nomeRemetente, 
		String texto, String rua, int numero, String bairro, String cidade,
		double cep){
	super(nomeDestinatario, nomeRemetente, texto);
	this.rua = rua;
	this.numero = numero;
	this.bairro = bairro;
	this.cidade = cidade;
	this.cep = cep;
}

//***getters e setters
public String getBairro() {
	return bairro;
}
public void setBairro(String bairro) {
	this.bairro = bairro;
}
public double getCep() {
	return cep;
}
public void setCep(double cep) {
	this.cep = cep;
}
public String getCidade() {
	return cidade;
}
public void setCidade(String cidade) {
	this.cidade = cidade;
}
public int getNumero() {
	return numero;
}
public void setNumero(int numero) {
	this.numero = numero;
}
public String getRua() {
	return rua;
}
public void setRua(String rua) {
	this.rua = rua;
}	

// ***metodo para imprimir os dados
public String TodosDados(){
return "\nRemetente: " + getNomeRemetente()+ "\nDestinatário: " +
getNomeDestinatario() + "\nRua: " + rua + " N.: " + numero + "\nBairro: " +
bairro + "\nCidade: " + cidade + "\nCEP: " + cep + "\nTexto: " + getTexto();
}
}

//***Classe correio
public class Correio {

private Mensagens[] vetMensagens;

public Correio(){
	vetMensagens = new Mensagens[0];
}



//***metodo de envio das mensagens
public void send(Mensagens novo){
	Mensagens[] aux = new Mensagens[vetMensagens.length+1];
	int i;
	for(i=0 ; i<vetMensagens.length ; i++)
		aux[i] = vetMensagens[i];
	
	aux[i] = novo;
	vetMensagens = aux;		
}



//***metodo que ira listar as mensagens enviadas
public void listaMensagens(){
	for(int i=0 ; i<vetMensagens.length ; i++){
		System.out.print(vetMensagens[i].TodosDados());
	}
}

}

import java.io.*;

public class testeMensagens {
public static void main(String[] args)throws IOException{
BufferedReader leitor = new BufferedReader(new InputStreamReader(System.in));
int op, numero;
double cep;
Mensagens msgs;
Correio correio;

	String remetente,destinatario, texto, usuario, dominio,
		rua, bairro, cidade;
	
	do{
		System.out.print("Menu");
		System.out.print("\n\n1 - E-mail");
		System.out.print("\n2 - Telegrama");
		System.out.print("\n3 - Listar Mensagens Enviadas");
		System.out.print("\n4 - Sair");
		System.out.print("Opção: ");
		op = Integer.parseInt(leitor.readLine());
		
		switch(op){
		case 1:	
			System.out.print("Remetente: ");
			remetente = leitor.readLine();
			System.out.print("\nDestinatario: ");
			destinatario = leitor.readLine();
			System.out.print("Usuario: ");
			usuario = leitor.readLine();
			System.out.print("Dominio: ");
			dominio = leitor.readLine();
			System.out.print("\nTexto: ");
			texto = leitor.readLine();				
			msgs = new E_mail(destinatario,remetente,texto,usuario,dominio);
			Correio.send(msgs);//como vou fazer pra chamar o metodo send????
			break;
			
		case 2:
			System.out.print("Remetente: ");
			remetente = leitor.readLine();
			System.out.print("\nDestinatario: ");
			destinatario = leitor.readLine();
			System.out.print("\nRua: ");
			rua = leitor.readLine();
			System.out.print("      Num.: ");
			numero = Integer.parseInt(leitor.readLine());
			System.out.print("\nBairro: ");
			bairro = leitor.readLine();
			System.out.print("\nCidade: ");
			cidade = leitor.readLine();
			System.out.print("\nCep.: ");
			cep = Double.parseDouble(leitor.readLine());				
			System.out.print("\nTexto: ");
			texto = leitor.readLine();
			msgs = new Telegrama(destinatario,remetente,texto,rua,numero,bairro,cidade,cep);
			Correio.send(msgs);
			break;
		case 3:
			cr.listaMensagens();
			break;
			
		}
	}while(op != 4);
}

}

É só vc criar uma classe com o metodo main criar a classe Correio e ativar seu metodo. Vc pode fazer dentro da propria classe Correio tipo:

public static void main(String[] args) { Correio correio = new Correio(); correio.send(); }

:? Que tal dei xar o “urgente” de lado da próxima vez? O pessoal vai ajudar o mais rápido possível de qualquer forma mesmo! :smiley:

Desculpe ai Vinicius, mas eu precisava de uma solução para esse exercicio ate as 7 horas da manha de hj, mas tudo bem, ja deu certo.