Dúvida questão do livro da Kathy (SCJP 6)

Boa noite! :wink:
Pessoal, tem uma questão que eu estou em dúvida no livro da Kathy… o polimorfismo só se aplica a métodos de instância, correto?
Porém vejam este código:

[code]public class A extends B {
public static String sing() { return “fa”;}

public static void main(String[] args) {
    A a  = new A();
    B b = new A();
    
    System.out.println(a.sing() + " " + b.sing());
}

}

class B {
public static String sing() {
return “la”;
}
}
[/code]

A saída produzida é “fa la”, porém são métodos estáticos. Seguindo o que o livro fala, não deveria ser “fa fa”?
Pelo que estou vendo o polimorfismo está se aplicando quando eu invoco b.sing().
Se alguém puder me esclarecer essa dúvida eu agradeço! :slight_smile:

quando vc usa uma instancia de uma classe para um método abstrato, isso indica a VM que vc quer utilizar o valor estático daquela classe, independente de vc ter extendido outra com o mesmo método ou atributo estático, portanto:

A.sing() == a.sing()

e no caso de B é normal, visto que ela num extende nenhuma classe…

[s]
BA

Desculpe georgesq mas não há nenhum método abstrato nem na classe A quanto na classe B.

Valeu ai pessoal! Quando os métodos são estáticos na verdade o que é importa é o tipo da referência e não o tipo do objeto :slight_smile:
Eles colocam este tipo de questão pra confundir mais ainda rsrs