Ola galera… gente eu to meio enrolado (oh novidade!!) a respeito de herança e atribuiçao…
eu criei a seguinte classe:
class Pessoa{
String nome;
char sexo;
Pessoa(){} // construtor sem parametros/sem corpo
Pessoa(String n, char s){ // outro construtor / inicializa os campos
nome=n;
sexo=s;
}
public void exibe(){ // metodo
System.out.println("Nome:"+nome);
System.out.println("Sexo:"+sexo);
}
}//Fim Pessoa
Depois a testei:
class TestaPessoa{
public static void main(String args[]){
Pessoa p1, p2; //declarcao de tipo de objetos
p1=new Pessoa();// construtor sem paramentros
p2=new Pessoa("Pedro Cabral", 'm');//construtor com parametros
System.out.println("Foram criados os objetos:");
p1=p2; //atribuicao de obejtos
p1.exibe(); // mensagem a metodo para objeto p1
p2.exibe(); // mensagem a metodo para objeto p2
p1.nome="Pero Vaz"; // alteracao de propriedade
p2.exibe();
}
}
Gostaria que alguem me ajudasse a trabalhar dessa forma a seguir com herança.
- Criar um aplicativo q contem 3 classes: Pessoa( ja fiz), Ator e Aluno.
Na classe Ator especializa a classe Pessoa(vejam o modelo q fiz), adicionando o campo String contato.
Na classe Aluno especializa a classe Pessoa, adicionando um campo int numMatric.
Cada classe deve conter conter pelo menos dois construtores (parametrizados/nao parametrizado) e o metodo exibe() que exibe todos os dados. Nas classes derivadas, tanto o construtor parametrizado quanto o metodo exibe() devem invocar o correspondente da super classe (Pessoa).
Por favor, se fizerem todo, tentem compilar… usem a classe teste… se puderem dar esse força pra esse humilde aprendiz eu fico grato…
um grande abraço a todos.
MigMax
Pessoal, eu ja comecei… mas cm disse estou me enrolando na hora de chamar o metodo exibe… cm manda invocar da classe Pessoa.
olhem o que ja fiz…
class Ator extends Pessoa{
String contato;
Ator(String _nome, char _sexo, String _contato){
super (_nome,_sexo);
contato=_contato;
}
Ator(){}
public void ExibeAtor(){
System.out.println("Nome e Sexo:");
}
}
Nao sei mais como chamar isso… ja tentei ate onde meu conhecimento vai.
MigMax
class Ator extends Pessoa{
String contato;
Ator(String _nome, char _sexo, String _contato){
super (_nome,_sexo);
contato=_contato;
}
Ator(){}
public void ExibeAtor(){
exibe(); //Este método é da superclasse Pessoa, que irá imprirmir Nome e Sexo
System.out.println("Contato:"+contato);
}
}
É só vc chamar o método exibe(); da superclasse e adicionar a impressão do contato, como vc pode ver no código acima… blz?
Cara tu é muito fera sabia…
Valeu mesmo.
MigMax
Pessoal,
Agora como faria por exemplo um aplicativo que pudesse conter as tres classes? eu sei a classe testaPessoa instancia um objeto… mas quando tento fazer o mesmo para as outras dá erro.
Alguem sabe cm fazer o aplicativo contendo as tres?
Eis as classes:
Pessoa:
class Pessoa{
String nome;
char sexo;
Pessoa(){} // construtor sem parametros/sem corpo
Pessoa(String n, char s){ // outro construtor / inicializa os campos
nome=n;
sexo=s;
}
public void exibe(){ // metodo
System.out.println("Nome:"+nome);
System.out.println("Sexo:"+sexo);
}
}//Fim Pessoa
Ator:
class Ator extends Pessoa{
String contato;
Ator(String _nome, char _sexo, String _contato){
super (_nome,_sexo);
contato=_contato;
}
Ator(){}
public void ExibeAtor(){
exibe(); //Este método é da superclasse Pessoa, que irá imprirmir Nome e Sexo
System.out.println("Contato:"+contato);
}
}
Aluno:
class Aluno extends Pessoa{
int numMatric;
Aluno(String _nome, char _sexo, int matric){
super (_nome,_sexo);
numMatric=matric;
}
Aluno(){}
public void ExibeAluno(){
exibe(); //Este método é da superclasse Pessoa, que irá imprirmir Nome e Sexo
System.out.println("Matricula:"+numMatric);
}
}
MigMax
[quote=“MigMax”]Pessoal,
Agora como faria por exemplo um aplicativo que pudesse conter as tres classes? eu sei a classe testaPessoa instancia um objeto… mas quando tento fazer o mesmo para as outras dá erro.
[/quote]
Posta o código pra gente vê onde está dando o erro… blz? 
brohter, eu nao sei se estou fazendo correto. eu peguei o exemplo da classe TestaPessoa, declarei os obj Ator contr1 e Aluno matric, só que quando tentei colocar lá na frente agora nao dá mais erro… parece até q meu compilador tem medo de vc… hehehe
Olha so o codigo q fiz…
class Aplicativo{
public static void main(String args[]){
Pessoa p1, p2; //declarcao de tipo de objetos
Ator contr1;// delcaracao do tipo do objeto
Aluno matric;//declaracao do tipo do obejto.
p1=new Pessoa();// construtor sem paramentros
p2=new Pessoa("Pedro Cabral", 'm');//construtor com parametros
System.out.println("Foram criados os objetos:");
p1=p2; //atribuicao de obejtos
p1.exibe(); // mensagem a metodo para objeto p1
p2.exibe(); // mensagem a metodo para objeto p2
p1.nome="Pero Vaz"; // alteracao de propriedade
p2.exibe();
contr1=new Ator();
matric=new Aluno();
contr1.ExibeAtor();
matric.ExibeAluno();
}
}
Na tela:
Foram criados os objetos:
Nome:Pedro Cabral
Sexo:m
Nome:Pedro Cabral
Sexo:m
Nome:Pero Vaz
Sexo:m
Nome:null
Sexo:
Tem como eu melhorar isso… acho que ainda nao tá legal… deveria aparecer algo nao é irmao?
MigMax
Blz manu?
No construtor sem argumentos, set os atrinutos da superclasse e da classe subclasse como vazios, como são Strings, basta vc atribuir “”… blz?
Outra coisa… ficaria melhor vc declararar todos os atributos como private, e criar os métodos set e get deles… assim vc não manipula diretamente os atributos e sim a através de métodos… arquiteturalmente fica muitas mais elegante tb… entre muitas outras vantagens… blz?
ai irmao… nao leva a mal nao… mas voei legal no que vc disse!!!
Dá pra fazer um exemplo… ainda nao consigo falar bem essa lingua… lembre-se que to aprendendo. hehee
MigMax :roll: