publicclassA{publicvoidM1(inti){System.out.println("M1 em A");}publicvoidM2(inti){System.out.println("M2 em A");}publicstaticvoidM3(inti){System.out.println("M3 em A");}publicstaticvoidM4(inti){System.out.println("M4 em A");}}publicclassBextendsA{publicstaticvoidM1(inti){System.out.println("M1 em B");}publicvoidM2(inti){System.out.println("M2 em B");}publicvoidM3(inti){System.out.println("M3 em B");}publicstaticvoidM4(inti){System.out.println("M4 em B");}publicstaticvoidmain(String[]args){System.out.println("Testando "Aa=newA();"");Aa=newA();a.M1(0);a.M2(0);a.M3(0);a.M4(0);System.out.println("Testando "Bb=newB();"");Bb=newB();b.M1(0);b.M2(0);b.M3(0);b.M4(0);System.out.println("Testando "Aab=newB();"");Aab=newB();ab.M1(0);ab.M2(0);ab.M3(0);ab.M4(0);}}
Tenta compilar. Vai ver que não é possível. Depois altere B para ficar assim:
publicclassBextendsA{// public static void M1(int i) { System.out.println("M1 em B");}publicvoidM2(inti){System.out.println("M2 em B");}// public void M3(int i) { System.out.println("M3 em B");}publicstaticvoidM4(inti){System.out.println("M4 em B");}publicstaticvoidmain(String[]args){System.out.println("Testando "Aa=newA();"");Aa=newA();a.M1(0);a.M2(0);a.M3(0);a.M4(0);System.out.println("Testando "Bb=newB();"");Bb=newB();// b.M1(0);b.M2(0);// b.M3(0);b.M4(0);System.out.println("Testando "Aab=newB();"");Aab=newB();ab.M1(0);ab.M2(0);ab.M3(0);ab.M4(0);}}
Agora tente compilar e rodar. Sacou?
J
josejorgejr
nem compila, pq nao se pode ter uma sobreposiçao de um metodo static
vamorim
Peraí. Não é bem assim. Você chegou a tentar compilar?
O que acontece é o seguinte. Métodos não estáticos são amarrados ao objeto em questão. Já os métodos estáticos são amarrados à classe da variável de referência. Dessa forma, se tenho uma classe Pai e uma classe Filha tais que ambas implementem os métodos metodoEstatico() e metodoNaoEstatico() e faço:
Ambos métodos da classe Filha serão chamados.
E atenção. Aquele primeiro exemplo não compila pois você não pode sobrepor um método estático com um não estático e vice-versa.