éverton…
é uma boa pergunta… marquei para acompanhar este tópico…
só algumas coisas…
herança de estático não existe mesmo… o que confunde são coisas como:
class A {
public static void sayHello() {
System.out.println( "hello" );
}
}
class B extends A {
}
public class teste {
public static void main( String[] args ) {
B.sayHello();
}
}
Resultado: hello
o que acontece no código acima é que a JVM faz uma busca na hierarquia da classe e identifica o método sayHello na classe A…
por isso a confusão…
outro detalhe polêmico é a redefinição de métodos estáticos…
class A {
public static void sayHello() {
System.out.println( "hello" );
}
}
class B extends A {
public static void sayHello() {
System.out.println( "hello2" );
}
}
public class teste {
public static void main( String[] args ) {
A.sayHello(); // hello
B.sayHello(); // hello2
A a = new B();
a.sayHello(); // hello
((B)a).sayHello(); // hello2
}
}
Isso ocorre porque o java deixar um atributo estatico ser acessado apartir de uma instância… (implicitamente ele troca a instância pela classe)…
Mas o problema que você citou, realmente eu não sabia…
se trocarmos o metodo da classe B…
class B extends A {
static void sayHello() {
System.out.println( "hello2" );
}
}
eu poderia querer que o método sayHello da classe B fosse visivel somente ao meu pacote (default) e o metodo sayHello de A fosse publico…
como na teoria, seriam 2 métodos independentes, redefinidos… eu poderia querer este comportamento…
mas… talvez pelo fato da busca hierarquica que a jvm faz… haja alguma limitação…
algo do tipo:
desconheco tal afirmação…
tomara que alguém que tenha uma resposta mais contundente veja o tópico
[]s