seguinte, preciso saber o nome que se dá em java de uma classe poder acessar um atributo protected em um método que recebe como parametro a própria classe.
Deixa exemplificar:
O atributo protected é visível em qualquer classe do mesmo pacote.
bruno.bariotti
o atributo protected é visivel alem de qualquer classe dentro do mesmo pacote, também é visivel nas subclasses!
P
Pedro_GTI
Como bruno falou… é totalmente visivel dentro do mesmo pacote… mas pode ser visivel nas subclasses de fora do pacote e essa é a unica diferenca de protected para default
Wolky
Disso eu já sabia
eu queria saber o nome desse conceito em java
mas falei com o professor e ele falou para estudar Classe prima
LPJava
cada professor viu.
bem, vamos la, o mais importante é aprender o conceito, polimorfismo significa muitas formas, vc nao tem nenhuma classe chamada polimorfismo,é um conceito e ponto final.
Porem, vc precisa saber quando ele acontece. Uma situacao do mundo real, todo animal, corre/anda, porem cada um de forma diferente. A tartaruga corre de uma forma e o cachorro de outra, porem ambos sao animais, dai o polimorfismo, vc tem uma classe Animal, vc acoes, porem cada animal vai implementar a sua forma de andar/correr.
protected é usado qdo vc nao quer algo tao publico nem tao privado, vc quer classe de outros pacotes tenha acesso, porem atraves da herança ai vc tem protected, pq o publico vc tem acesso independente da forma herança ou nao, e private nao dar pra ter acesso de outro pacote.
espero ter ajudado flw.
luciano2
Bem você esqueceu de dizer que o conceito de polimorfismo está fortemente ligado com interface, pois sem uma interface em comun os animais não executam as mesmas operações.
Ex:
Nessas duas classes não existe polimorfismo
public class Carro{
public void correr()
}
public class Homem{
public void correr()
}
public class Carro{
public void correr()
}
public class Homem{
public void correr()
}
Existe sim, afinal ambas estendem Object. A operação correr() é que não é polimórfica.
luciano2
Se vamos falar do polimorfismo dando Object como exemplo então ninguem iria precisar aprender.
discorpio
Boa noite a todos.
Quando um atributo de uma classe é do tipo objeto e recebe como valor a própria classe em que está declarado, este conceito chama-se “Recursividade”.
No seu caso, a sub-classe está recebendo como parâmetro um objeto que é a super-classe e armazenando num atributo protegido do tipo objeto declarado na própria super-classe, pois a recursividade acontece também nestes casos, e também se o seu atributo fosse privado e estivesse encapsulado, também pode ocorrer a recursividade com o método set. Ex.
classIterador{privateArrayList<ItemPersistencia>colecao;protectedintindice;publicIterador(){colecao=newArrayList<ItemPersistencia>();indice=0;}publicIterador(ArrayList<ItemPersistencia>arl){colecao=arl;indice=0;}publicArrayList<ItemPersistencia>getColecao(){returncolecao;}publicvoidsetColecao(ArrayList<ItemPersistencia>colecao){this.colecao=colecao;}publicbooleanvazio(){returncolecao.isEmpty();}publicvoidprimeiro(){indice=0;}publicvoidfim(){indice=colecao.size()-1;}//mais metodos como anterior e proximo... }classIteradorClienteextendsIterador{publicIteradorCliente(ArrayList<ItemPersistencia>arl){super(arl);}// Mesmo encapsulado ocorre a recursividade publicIteradorCliente(Iteradorit){setColecao(it)}publicClienteobter(){return(Cliente)super.obter();}// Assim também há recursividadesetColecao(newIterator());}
esmiralha
Luciano,
Eu só quis lembrar que o polimorfismo se aplica também a herança e não só a implementação de interfaces. Desculpe se eu atrapalhei você em alguma coisa.
Vou reviver aqui esse topico apenas para tentar ajudar quem esta começando e acaba caindo nesses topicos...se bem que é uma "ressurreicao" que nem se compara a muitas que vejo por ai de 10 anos antes xD
Enfim, é soh pra citar uma coisa importante: no caso desse codigo do amigo Luciano seria bem mais adequado usar uma classe abstrata em vez de uma interface pois a meu ver essas duas classes estao "fortemente relacionadas", logo poderiam compartilhar alguns metodos "não abstratos" da superclasse Animal...nao estou dizendo que o que ele fez esta errado, longe disso, apenas estou citando classe abstrata(aliás, interface nao deixa de ser um caso particular de classe abstrata) no intuito de enriquecer esse topico e ajudar quem está iniciando pois esse assunto gera realmente muita duvida no inicio =D
Vou reviver aqui esse topico apenas para tentar ajudar quem esta começando e acaba caindo nesses topicos...se bem que é uma "ressurreicao" que nem se compara a muitas que vejo por ai de 10 anos antes xD
Enfim, é soh pra citar uma coisa importante: no caso desse codigo do amigo Luciano seria bem mais adequado usar uma classe abstrata em vez de uma interface pois a meu ver essas duas classes estao "fortemente relacionadas", logo poderiam compartilhar alguns metodos "não abstratos" da superclasse Animal...nao estou dizendo que o que ele fez esta errado, longe disso, apenas estou citando classe abstrata(aliás, interface nao deixa de ser um caso particular de classe abstrata) no intuito de enriquecer esse topico e ajudar quem está iniciando pois esse assunto gera realmente muita duvida no inicio =D
Bom dia a todos.
Principalmente quando todos os animais tem algo em comum, como se alimentar, locomover, dormir, acordar, enxergar e etc.
Estes métodos comuns a todos os animais, podem e devem ser implementados em uma classe abstrata, onde essa implementação numa interface não seria possível.
O uso de uma interface cabe quando todos os métodos a serem utilizados variam de classe para classe.