Estou com uma duvida sobre metodos statics
Sendo que li no livro da kathy sierra que os metodos staticos podem ser redefinidos e não sobrescritos certo?
A maioria das questões que achei nos mocks forão a respeito do polimorfismo por exemplo
Mae e =new Filha();
e.metodo() // aki sai o metodo de Mae pq polimorfismo nao funciona para estaticos.
Mais entao me surgiu uma duvida quando eu estava fazendo ums testes
Vejão o codigo a abaixo a classe filha literalmente herda o metodo static:
[code]import static java.lang.System.*;
class Super {
static void p(){
out.print(“super”);
}
}
public class Teste extends Super{
public static void main(String[] args) {
p();
}
}
[/code]
output “super”
O pessoal aki ate testou com a api de reflexão e conferiu que acontece a herança.
porem se eu forço subscrita que supostamente não poderia exitir e sim uma redefinição existir recebo um erro do compilador
[code]import static java.lang.System.*;
class Super {
static void p(){
out.print(“super”);
}
}
public class Teste extends Super{
private static void p(){
out.print(“super”);
}
public static void main(String[] args) {
p();
}
}
[/code]
Recebo um erro: Teste cannot override p(); porque estou diminuindo a visibilidade.
Alguem pode me esclarecer sobre override e overload em staticos.
Obrigado.