Curiosidade  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
fbanin
Debugger
[Avatar]

Membro desde: 31/03/2005 07:39:04
Mensagens: 62
Offline

Olhe os códigos:

Classe: Pai.java


Classe: Filho.java


Classe: TestePaiFilho.java



Sem implementar... qual será a saída ?!?!?!?!?!

Fabiano Banin
e-mail: fbanin@gmail.com
[MSN]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline



Eu creio que é por duas razões.
1 - Porque nome(PAI) é estática, e no método printNome, ele buscar a variável de instância.
2 - Porque não existe overreader de variáveis, logo, ele assumirá a variável do tipo do objeto.

Mas são só achismos por enquanto...

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
fbanin
Debugger
[Avatar]

Membro desde: 31/03/2005 07:39:04
Mensagens: 62
Offline

é essa saída mesmo....

Como eu não criei uma variavel para a classe Filho, ele usa a da pai... agora o que fiquei na dúvida foi, no TestePaiFilho eu criei duas instancias... logo seriam dois objetos diferentes, uma para PAI e outra para FILHO, pq ele assume o mesmo nome para as duas instâncias ?! Ele não deveriai ter como saída p.printNome() -> PAI -> PAI ??

Fabiano Banin
e-mail: fbanin@gmail.com
[MSN]
skill_ufmt
JavaEvangelist
[Avatar]

Membro desde: 20/05/2003 18:02:23
Mensagens: 318
Localização: Cuiabá - MT
Offline

Ele vai imprimir FILHO, FILHO

static garante uma instancia, mas não a imutabilidade da variável.

Antes que perguntem porque não imprime PAI e depois Filho, primeiro ele agirá sobre filho, mudará o valor da variável, e então irá imprimir o valor da classe pai. (acho que é isso).

Isso se não me engano é uma das dicussões en torno do sigleton, visto que alguns modelos como do GOF, se não me engano, ele assumem static para garantir uma unica instância, mas acontece que essa instancia poderá ser alterada em seu valor.
Alguns dizem que o verdadeiro singleton tem que ter o "final" e o "static", mas creio que os dois casos são permitidos, vai depender das suas necessidades.

Windows: Not Plug & Play, but Bug & Pay!
_________________________________________________
Kivanio Pereira Barbosa
Bacharel em Ciência da Computação

CUIABÁ JAVA USERS
www.cajumt.com.br
[WWW] aim icon [MSN] [ICQ]
cu_ringa
Virtual Machine Man
[Avatar]

Membro desde: 27/08/2003 00:19:11
Mensagens: 602
Localização: Natal-RN
Offline

pelo q sei a variavel nome da classe Pai ja existe antes de vc instanciar um objeto da classe Pai, ja q a variavel nome e static, ai qnd vc cria um objeto da classe Filho ele vai colocar na variavel nome da classe Pai o valor FILHO, entao qnd vc for chamar os metodos eles vao mostrar a mesma coisa. Agora se vc fizesse assim:

ai creio eu q vai mostrar resultados diferentes.

"O que levamos desta vida, é a vida que a gente leva".
skill_ufmt
JavaEvangelist
[Avatar]

Membro desde: 20/05/2003 18:02:23
Mensagens: 318
Localização: Cuiabá - MT
Offline

cu_ringa wrote:
ai creio eu q vai mostrar resultados diferentes.


Não irá mostrar resultados diferentes caro cu_ringa, como disse a variável nome já existirá, porém ela só sera impressa pela classe Pai, após ser impressa pela classe filho, mas na classe filho ocorre a alteração do valor para "FILHO", quando do retorno a classe pai a variável nome já se encontra com este valor e então é impressa, uma espécie de recursão.

This message was edited 1 time. Last update was at 19/04/2005 10:40:26


Windows: Not Plug & Play, but Bug & Pay!
_________________________________________________
Kivanio Pereira Barbosa
Bacharel em Ciência da Computação

CUIABÁ JAVA USERS
www.cajumt.com.br
[WWW] aim icon [MSN] [ICQ]
cu_ringa
Virtual Machine Man
[Avatar]

Membro desde: 27/08/2003 00:19:11
Mensagens: 602
Localização: Natal-RN
Offline



skill_ufmt escreveu:

...como disse a variável nome já existirá, porém ela só sera impressa pela classe Pai, após ser impressa pela classe filho...

skill_ufmt, discordo de vc. Do jeito que a classe TestePaiFilho foi escrita a classe a variavel nome será impressa prmeiro pela classe Pai e depois pela classe Filho. Agora concordo com vc na hora em q a classe Filho sobrescreve a variavel nome, e assim qnd for imprimida a variavel nome o resultado e FILHO nos 2 casos.

skill_ufmt, acho q vc num viu a ordem em q coloquei as chamadas.

This message was edited 1 time. Last update was at 19/04/2005 10:55:03


"O que levamos desta vida, é a vida que a gente leva".
skill_ufmt
JavaEvangelist
[Avatar]

Membro desde: 20/05/2003 18:02:23
Mensagens: 318
Localização: Cuiabá - MT
Offline

cu_ringa wrote:

skill_ufmt, acho q vc num viu a ordem em q coloquei as chamadas.


Sim cu_ringa, do jeito dele é repetido ao valor, do seu modo realmente são diferentes, o esquema está na instanciação dos objetos

Abraços

Windows: Not Plug & Play, but Bug & Pay!
_________________________________________________
Kivanio Pereira Barbosa
Bacharel em Ciência da Computação

CUIABÁ JAVA USERS
www.cajumt.com.br
[WWW] aim icon [MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team