Duvida override do JavaCertificate

4 respostas
F

Olá pessoal
Por que esse codigo imprimi null sendo que as variaveis foram todas inicializadas?

1.  class Phone {
2.     static String device = "Phone.device";
3.     void showDevice() {
4.        System.out.print("Phone.showDevice," + device + " ");
5.     }
6.     Phone() {
7.        showDevice();
8.     }
9.  }

1.  class Mobile extends Phone {
2.     String device = "Mobile.device";
3.     void showDevice() {
4.        System.out.print("Mobile.showDevice," + device + " ");
5.     }
6.     Mobile() {
7.        showDevice();
8.     }
9.     public static void main(String[] args) {
10.      Mobile n = new Mobile();
11.      n.showDevice();
12.   }
13. }

4 Respostas

M

Sua variavel device em Mobile nao e (static) por isso o null
e se voce quiser chamar o metodo showDevice em Phone
tem que usar super.showDevice no construtor de Mobile

Marcos Rosa

F

acho q isso acontece pq a primeira vez q a variavel device eh usada (no seu prog somente a variavel da subclasse sera usada), o construtor ainda n terminou de ser executado, entaum ainda n foi atribuido o valor q vc passou…

M

isso ai é pra ver qual a sequencia de construtores q são chamados qnd tu instancia um objeto, então, a saida será

qnd tu instancia um new Mobile(), esta indo para a linha 6 da classe Phone, depois pra linha 7 de Phone, depois pra linha 3 de Phone, depois pra linha 6 da classe Mobile, linha 7 de mobile, e linha 11 de Mobile.

F

Obrigado a todos.
Agora entendi

Criado 5 de agosto de 2004
Ultima resposta 6 de ago. de 2004
Respostas 4
Participantes 4