Title: RES: [java-list] Certificacao BETA
Cristiano,
 
                até concordo com o seu ponto de vista, até já tive essa mesma dúvida. Mas a SUN diz o seqguinte:
 
"You cannot override a static method but you can hide it" , ou seja, todas as vezes que falarem sobre métodos estáticos, assuma que eles não podem ser sobreescritos, mas escondidos, dê uma olhada neste exemplo:
 
 

class MyTest {

   public void myTest() {
         System.out.println("Printing myTest in MyTest class");
   }

   public static void myStat() {  //método estático na superclasse
         System.out.println("Printing myStat in MyTest class");

   }
}

public class Test extends MyTest {

    public void myTest() {
         System.out.println("Printing myTest in Test class");
   }

   public static void myStat() { //método estático na subclasse
         System.out.println("Printing myStat in Test class");

   }

   public static void main ( String args[] ) {

       MyTest mt = new Test();
       mt.myTest();
       mt.myStat();
   }

Aparentemente parece que houve uma sobreescrita, mas não houve se vc executar este programa vc verá seguinte saída...

"Printing myTest in Test class followed by Printing myStat in MyTest class "

e não "Printing myTest in Test class followed by Printing myStat in Test class " , pq na verdade o método foi escondido (hidden) e não sobreescrito (overriden).

 Lembre -se do seguinte:

"You cannot override a static method but you can hide it"

 

Espero tê-lo ajudado...

Responder a