Pessoal, no SCJP 6 na parte que explica sobre static, está dizendo que métodos estáticos não podem ser sobrescritos mas podem ser redefinidos. Mas olhando o código não consegui notar qual seria a diferença entre um e outro. Procurei algumas coisas na net mas continuo não entendendo.
class Animal {
static void doStuff() {
System.out.print("a ");
}
}
class Dog extends Animal {
static void doStuff() { // it's a redefinition,
// not an override
System.out.print("d ");
}
public static void main(String [] args) {
Animal [] a = {new Animal(), new Dog(), new Animal()};
for(int x = 0; x < a.length; x++)
a[x].doStuff(); // invoke the static method
}
}
Overloaded e overridden eu entendi na boa. Mas esses dois conceitos ai em cima parecem ser a mesma coisa…