Serialização

5 respostas
P

Neste caso:

class Animal{
       int x = 45;
       
       public Animal (){
             x = 46;
       }
}

class Horse extends Animal implements Serializable{
      int y;

      y = 34;
      x = 49;
}

Quando eu deserializar Horse, y estara valendo 34, mas e x? Estara valendo 45 ou 46?
Vlw

5 Respostas

F

Serialização sempre irá gravar a posição atual do objeto.

Primeiro a tua classe Horse tem alguns problemas, a atribuição de y e x não podem estar abaixo da classe. Se vc fizer assim:

class Horse extends Animal implements Serializable{
      int y = 34;
      int x = 49;
}

Vc estará sobreescrevendo a propriedade x que tinha sido herdada de Animal e neste caso irá valer 49.

Qd instanciar um objeto primeiro será chamado os construtores da classe pai e depois a do próprio objeto.

L

Eu só não entendi o que são o y = 34 e x = 59 da classe Horse voando ali.
Mas respondendo a sua pergunta, o valor de x será o valor que estava quando Horse foi serializado… no caso se vc fez apenas um new Horse antes do objeto ser Serializado o valor vai ser 46.

Porque 46? O valor inicial de seu x é 45 mais o construtor de Animal muda ele para 46 e como o construtor de Horse chama o construtor de Animal (ja que extends Animal), x será 46.

P

O meu exemplo foi bem ruim, eu so queria saber se quando Horse fosse deserializado, a variavel x iria receber o valor de 45, ou se o construtor seria chamado,
Desculpe pela confusão.
Flw

L

“fabiophx”:

Vc estará sobreescrevendo a propriedade x

Só um comentário sobre sua resposta Fabio, não existe sobreescrever propriedade, o x do filho é outra propriedade bele?

ex:

class Animal {
  int x = 45;
}

class Horse extends Animal {
  int x = 49;
}

public static void main(String[] args) {
  Horse h1 = new Horse();
  Animal h2 = new Horse();
  System.out.println(h1.x);
  System.out.println(h2.x);
}

de resto bele :wink:

F

luBS,
Correto, realmente “sobreescrevendo” não é o termo correto.

Criado 5 de dezembro de 2007
Ultima resposta 5 de dez. de 2007
Respostas 5
Participantes 3