Dúvida sobre herança e reescrita de atributo  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline



Alguem pode me explicar porque o resultado deste programa é 1? Tudo bem eu não reescrevi o método na Classe2 mas reescrevi o atributo então quando herdei da Classe1 o metodo getNum1 foi pra "dentro" da Classe2, que tinha o atributo num1 que era =2, então porque ele não retornou este??
Podem me esclarecer melhor!!

Obrigado!!

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
GiancarloBraga
Java Ninja
[Avatar]

Membro desde: 25/06/2007 06:00:00
Mensagens: 261
Offline

Você simplesmente está criando um objeto da classe 2. Certo?

Então você usa a referência a esse objeto através da variável 'n'.

Esse 'n' vai acessar um método da classe 2, que herda tudo da classe 1. Ou seja, falamos do método getNum1(). Esse método, usado para pegar a variável 'num1', corresponderá ao escopo da classe2. E não mais da classe 1, pois dentro da 2 você sobrepôs essa variável 'num1'.

This message was edited 1 time. Last update was at 28/10/2007 02:13:14


-------------------------
Visitem meu novo Java Blog para iniciantes:
http://giancarlobraga.joolo.com/




danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

Esse método, usado para pegar a variável 'num1', corresponderá ao escopo da classe2. E não mais da classe 1, pois dentro da 2 você sobrepôs essa variável 'num1'.

Então Giancarlo eu sobrepôs a variavel num1 na classe2 e atribui a ela o valor 2, só que este programa me retorna 1 que é o valor da varíavel definida no escopo da Classe1.

Porquee, ele retorna este valor???


Obrigado

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
GiancarloBraga
Java Ninja
[Avatar]

Membro desde: 25/06/2007 06:00:00
Mensagens: 261
Offline

Ah, ele está retornando 1?
Uai.
Então analisei errado(na pressa).
Me desculpe.

Então, creio que nesse caso de herança então não tenha essa de atribuição. Quando você invoca o método getNum1 ele pertence ao escopo da classe Num1, onde o valor dessa mesma variável é 1, por isso retorno 1.

-------------------------
Visitem meu novo Java Blog para iniciantes:
http://giancarlobraga.joolo.com/




Bernini
Smalltalk

Membro desde: 03/02/2007 16:35:25
Mensagens: 1
Offline

@danielbussade

Você deveria alterar, através de um método, o valor do atributo num1.
Como o atributo é protected, por regra da OO ele só pode ser acessado através de métodos da superclasse ou subclasse.
Segue um exemplo:

jonatan0573
Smalltalk
[Avatar]

Membro desde: 02/02/2009 19:49:23
Mensagens: 1
Offline

Na minha opinião o correto seria reescrever o metodo e eu usaria tb polimorfismo( no caso de vc querer adicionar mais alguma funcionalidade a sua classe, no futuro ). esse atributo da Classe2 tb seria excluido, pois já existe esse msm atributo na Classe1.

se for necessario posto o codigo...

Jonatan Machado
[WWW] [MSN]
edmarr
Virtual Machine Man
[Avatar]

Membro desde: 28/05/2009 09:52:36
Mensagens: 597
Offline

Resumindo
se vc tivesse o codigo ;



Dai então vc receberia o valor que vc estava imaginando , ou seja
como vc ta extendendo uma classe , ela simplesmente vai subir a hierarquia para poder verificar se existe o método antes de lançar uma Exception.

SCJP 6 => Target finalized!
SCWCD => Target located!

Depois que seu problema tiver resolvido, vá no primeiro post, editar o Título adicionando a tag [RESOLVIDO] no final do Título .

Link para Pesquisa
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team