| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 15:29:15
|
KassiPretti
JavaEvangelist
![[Avatar]](/images/avatar/67614aacd469da7f9d611c9be60462f1.jpg)
Membro desde: 13/11/2007 16:28:14
Mensagens: 306
Localização: Vila Velha - ES
Offline
|
Pessoal esse tópico tá rendendo heim...
E vcs falam, falam e não saem do lugar. Arrumaram diversas maneiras
de dizer a msm coisa.
Na minha humilde opinião e através de tudo que foi dito pude concluir que todas as variáveis e metodos são herdados de
uma classe, mas as variaveis "private" não são acessiveis diretamente, mas somente pelos metodos set e get. Então se uma determinada variavel
não pode ser acessada e modificada por uma outra classe no caso da
herança devemos repensar o encapsulamento da variavel.
Seria isso q eu penso
|
Kassiane Pretti |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 16:42:15
|
dicabeca
JavaEvangelist
![[Avatar]](/images/avatar/6546822e37fb3be79b5fe7e92e11087c.jpg)
Membro desde: 12/05/2007 23:28:48
Mensagens: 458
Localização: Rio de Janeiro - RJ
Offline
|
qualquer coisa private nao herda,sendo variavel ou metodo,se quiserem modificar uma variavel private,crie um metodo publico,logico o metodo na classe pai onde c encontar a variavel vlw!!!!!
This message was edited 1 time. Last update was at 09/01/2008 16:42:43
|
"Quem um dia experimentou a emoção de ser Flamengo, nunca mais vai viver outra que se equipare"
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 16:54:30
|
soudaniel_01
JavaEvangelist
Membro desde: 11/04/2007 18:55:00
Mensagens: 419
Offline
|
num herda naum,..
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 16:55:34
|
pm
JavaEvangelist
Membro desde: 28/01/2005 12:42:15
Mensagens: 429
Offline
|
dicabeca wrote:qualquer coisa private nao herda,sendo variavel ou metodo,se quiserem modificar uma variavel private,crie um metodo publico,logico o metodo na classe pai onde c encontar a variavel vlw!!!!!
Logico que herda....pq vcs não fazem o download do BlueJ ou olhem do debug de qq IDE que o atributo privado do pai pertence ao filho, isto é, foi herdado.
Herança é diferente de visibilidade(acesso)
pq esta tão dificil de entender ?
Segue os prints para os mais preguiçosos
| Nome do arquivo |
bluej.zip |
Download
|
| Descrição |
|
| Tamanho |
3 Kbytes
|
| Baixado: |
68 vez(es) |
| Nome do arquivo |
prints.zip |
Download
|
| Descrição |
|
| Tamanho |
99 Kbytes
|
| Baixado: |
87 vez(es) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:01:42
|
pm
JavaEvangelist
Membro desde: 28/01/2005 12:42:15
Mensagens: 429
Offline
|
Olhem o atributo "nome"....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:09:38
|
sergiotaborda
Forum Spammer
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3179
Offline
|
ViniGodoy wrote:Já sei porque estamos discutindo.
Estamos conversando
Mas a definição de que herança é só uma forma de aumentar o escopo também é fraca. Você mesmo falou: "herança é o nome de uma forma especifica de aumento de escopo". E o que torna essa forma específica?
Justamente a criação de herarquias de classes. Qualquer hierarquia?
Só ha uma hierarquia em java.
Então, herança é apenas uma forma de aumentar o escopro do membros de uma classe que implicam que a classe derivada pertence na hirarquia da original.
Também não, classes friend (do C++), por exemplo, não formam herança e aumentam escopo. Classes onde se faz: class x : private Y, também não formam herança (formam relação "é implementado em termos de") e também aumentam escopo.
O que vc está dizendo aqui é que existem outras formas de aumentar o escopo, que não são a herança. Certo. Como eu disse: em java, shadowing também é uma forma de aumentar o escopo.
Por existirem várias formas de aumentar o escopo ( static seria outra) é que eu disse que a herança é uma forma especifica. É uma entre outras.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:15:07
|
fabioissamu
JavaChild
Membro desde: 21/02/2007 16:48:46
Mensagens: 144
Localização: Rio de Janeiro
Offline
|
na minha opinião não herda.
Pode ocorrer coisas estranhas como o reflections
um método publico chamar um privado e assim ter um pseudo acesso, mas isso não é a definição.
É como herança múltipla, não tem, mas vc pode contornar.
|
se tanto faz, então escolha o melhor.
http://www.goals.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:39:51
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
Membro desde: 05/07/2006 14:39:44
Mensagens: 536
Localização: Curitiba - PR
Offline
|
Eu estou ficando realmente surpreso com a profundidade da capacidade lógica de pensar...
Se for considerada uma classe pai que tenha uma propriedade com o modificador de acesso private e um método que lê essa propriedade, quando eu estender essa classe e fizer o uso desse método herdado, a propriedade que preserva a informação (declarada na classe pai como private) estará alocada na memória do além e naturalmente não fará parte do objeto que é uma instância da classe filha e quando um objeto dessa subclasse fizer uma leitura através desse método get, a VM do java irá romper a barreira do material e obter uma informação do além e que naturalmente NÃO FARÁ PARTE DO OBJETÖ...
Vamos continuar a conversar sobre a policromia dos cristais partidos, mesmo com quem entra, não lê os posts anteriores e repete hipoteses já derrubadas e não fundamentadas...
vw
|
Sun Certified Java Programmer 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:39:53
|
paulovittor23
JavaGuru
![[Avatar]](/images/avatar/402cac3dacf2ef35050ca72743ae6ca7.jpg)
Membro desde: 11/05/2006 14:09:41
Mensagens: 282
Localização: Santos - SP
Offline
|
Interessante... pensando que, todo filho é o pai de uma forma especializada logicamente a resposta teria de ser sim... acredito que as referências que dizem que não herda seja pra facilitar o entendimento do modificador de acesso apenas, não levando em conta a essencia da coisa...
|
Paulo Vitor
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0
Sun Certified Web Component Developer for the Java 2 Platform, Enterprise Edition 1.4
http://www.paulovittor23.org/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 17:59:49
|
fabioissamu
JavaChild
Membro desde: 21/02/2007 16:48:46
Mensagens: 144
Localização: Rio de Janeiro
Offline
|
Vc consegue chamar o método, mas a definição é que não herda.
Por exemplo, vc herda o monitor da pessoa?
Não, porém vc consegue modificar o que é desenhado nele...
|
se tanto faz, então escolha o melhor.
http://www.goals.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2008 22:29:57
|
sergiotaborda
Forum Spammer
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3179
Offline
|
Dieval Guizelini wrote:Se for considerada uma classe pai que tenha uma propriedade com o modificador de acesso private e um método que lê essa propriedade, quando eu estender essa classe e fizer o uso desse método herdado, a propriedade que preserva a informação (declarada na classe pai como private) estará alocada na memória
Memoria = JVM = Plataforma = Implementação
Herança = Regra = Linguagem = Teoria
Linguagem é diferente de plataforma. O que acontece na memoria não tem nada a ver com a linguagem.
A prova disso é que muitas linguagens compilam o mesmo bytecode e funcionam na mesma JVM usando a mesma memoria. É dificil de aceitar isto ? Acho que não.
Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ?
O livros não afirmam que membros privados não são herados simplesmente porque querem se didáticos, eles dizem isso porque é a verdade. A prova é que dada uma classe que extende outra vc não consegue acessar nenhum dos membros privados da classe hierarquicamente superior.
Se vc acessa um método publico i ou protegido da classe pa que por sua vez acessa a variável privada , tudo bem. Isso não prova que a clase filha tem acesso à variável privada.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 11:19:42
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
Membro desde: 05/07/2006 14:39:44
Mensagens: 536
Localização: Curitiba - PR
Offline
|
sergiotaborda wrote:
Dieval Guizelini wrote:...
Memoria = JVM = Plataforma = Implementação
Herança = Regra = Linguagem = Teoria
Linguagem é diferente de plataforma. O que acontece na memoria não tem nada a ver com a linguagem.
A prova disso é que muitas linguagens compilam o mesmo bytecode e funcionam na mesma JVM usando a mesma memoria. É dificil de aceitar isto ? Acho que não.
Depende, em que você queira aplicar, quando falamos em Java, normalmente estamos falando do conjunto todo.
Com relação a sua definição: "Herança = Regra = Linguagem = Teoria", poderia ser melhor definida que "Herança é conceito definido na OO" e a interpretação dos engenheiros da SUN com relação a este conceito é exclusivamente implementado com o uso da palavra chave extends, e conforme as especificações do JCP para as VM.
sergiotaborda wrote:
Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ?
Infelizmente não posso concordar, apenas com um conhecimento de como a ferramenta manipula a memória, IO e etc, pode-se compreender vários conceitos. Apenas para citar, que é outro ponto polêmico no Java, a passagem de parâmetros por valor ou referência.
sergiotaborda wrote:
O livros não afirmam que membros privados não são herados simplesmente porque querem se didáticos, eles dizem isso porque é a verdade. A prova é que dada uma classe que extende outra vc não consegue acessar nenhum dos membros privados da classe hierarquicamente superior.
Se vc acessa um método publico i ou protegido da classe pa que por sua vez acessa a variável privada , tudo bem. Isso não prova que a clase filha tem acesso à variável privada.
Como docente não posso "desconsiderar" a literatura normalmente aceita pela sociedade, mas como pesquisador da área de desenvolvimento eu posso afirmar dois grandes problemas com a literatura técnica, principalmente na área da informática:
1. Os tradutores normalmente não possuem conhecimento da área de informática, e quando possuem são fracos. O maior exemplo desse problema, talvez seja o livro de Inteligência Artificial do Norvig e Russellque quase conseguiu acabar com a área de IA no Brasil no fim da década de 80 e início dos anos 90.
2. O conceito de "aspectos didáticos" associados aos livros que se destinam a treinamentos ou preparação para certificações são em sua maioria ruins e apresentam metodologias que já não são mais tão utilizadas no sistema educacional do Brasil. Principalmente as metodologias baseadas em Piaget. A exemplo o livro da Kathy.
Agora, focando no conceito de OO, de herança, observe que quando uma subclasse executar qualquer código que faça uso (ou é dependente) de uma propriedade declarada com private, ela não deveria funcionar se não tivesse herdado essa característica. Logo, volto a afirmar que toda classe especializada de outra classe através do recurso de herança, seja em Java ou em qualquer linguagem do paradgima Orientado a Objetos, terá todos os recursos da classe pai.
fw
|
Sun Certified Java Programmer 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 11:49:55
|
francislon
JavaEvangelist
![[Avatar]](/images/avatar/46bcb8f7477c1c33cf6dd9dd5c8045a3.jpg)
Membro desde: 07/02/2007 09:27:21
Mensagens: 312
Localização: Ilhéus-BA
Offline
|
ViniGodoy wrote
Existe uma diferença entre a existência de um atributo e a sua visibilidade.
O que o Dieval quer dizer é que, uma classe filha herdará um atributos e métodos do pai, no sentido de que, essas estruturas existirão, serão alocadas em memória, e serão usadas pelos mecanismos internos da classe. Afinal de contas, o filho é um objeto da classe pai e nada mais natural do que ele ter absolutamente todos os atributos do pai.
Entretanto, graças às regras de escopo, esses atributos e métodos não serão visíveis na classe filha. Daí a confusão. Assim, eles são herdados (pq existem e são acessados indiretamente pelos filhos), mas não são visíveis, estão fora do escopo da classe filha.
Por isso, não é possível fazer polimorfismo de métodos privados, por exemplo. O que ocorre se sobrescrevermos métodos privados é acabarmos com métodos de escopos diferentes. Um deles será usado quando a porção do pai invocar, outro será usado quando a porção do filho invocar que, se houvesse polimorfismo, apenas o método do filho seria invocado.
Pra mim ViniGodoy foi muito feliz nessa resposta, o fato de não ser visivel naum quer dizer que não foi herdado.
Tá tudo explicado ai
|
"Mais vale a lágrima da derrota do que a vergonha de não ter lutado."
http://chadetecnologia.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 15:01:36
|
Zeed01
Virtual Machine Man
Membro desde: 27/10/2006 16:44:29
Mensagens: 547
Offline
|
Boa tarde colegas !
Nem vou dar minha humilde opinião no meio de tantos pensadores e filósofos !
Mas juro que gostaria de saber o que a Kathy diria sobre essa frase:
"p/ a prova marque SEMPRE que não herda. o livro da Kathy é bem claro, ele não ensina Java, ensina a passar na prova, é o que ela faz e MUITO bem. "
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 15:17:42
|
pardal_nb
Virtual Machine Man
Membro desde: 12/09/2006 08:26:06
Mensagens: 672
Offline
|
Uau...
Quando criei este post não pensei q daria tanta repercussão..
Quando eu acho q já formei a minha opinião sobre o assunto, vem um post e muda tudo...
(por eqt estou do lado que não herda - JVM, acessa. E, se analisar pelo conceito de OO herda.
|
|
|
 |
|
|