Chamada a super [Resolvido]

2 respostas
charlesbraw

Galera,
estou fazendo alguns simulados da SCJP aqui e me deparei com o seguinte código:

package exemplo;

interface XInterface{
     public abstract void runDemo();
}

abstract class XClass implements XInterface{
     String s="Java";
     public abstract void runDemo();
     {s="C++";}
}

public class Principal extends XClass implements XInterface{
     {s="C#";}
     public void runDemo(){
          System.out.println("Demo"+super.s);
     }
     public static void main(String args[]){
          XInterface xi=new Principal();
          xi.runDemo();
     }
}

A saída é: DemoC#

Não entendi essa chamada a super.s que esta dentro do método runDemo da class Principal.

Quando Ele chamou a variavel que fica no bloco de inicialização da classe, mas quando a gente chama super não seria estar acessando algo da classe pai?
Apesar que nesse caso a classe pai seria uma interface.

ser alguem puder me explicar o que aconteceu ficarei grato.
valeu.

2 Respostas

zoren

se você reparar bem, vc chamou uma variável da super classe.

no bloco de inicialização, vc trocou o valor dela

charlesbraw

ok zoren, agora consegui entender.

Criei alguns exemplos aqui para tentar forçar o funcionamento conforme você havia dito.
Agora ficou claro.

Valeu.

Criado 29 de julho de 2010
Ultima resposta 29 de jul. de 2010
Respostas 2
Participantes 2