1
resposta

Herança de métodos static

class B { 
    protected String s = "a";
    protected B() {}
    static A B(String s) {
        return new A(s);
    }
}
class A extends B {
    A(String s) {
        this.s = s;
    }
    public static void main(String[] args) {
        A b = A.B("t");
        System.out.println(b.s);
    }
}

Pelo gabarito do exercício, "Compila e imprime t". Porem na aula o professor disse: "Não existe herança de método estático". Como A teve acesso ao método B se ele não herdou e nem contém um método B?

1 resposta

Opa, é um jeito de falar, mas que realmente não reflete 100% a realidade. Todos os métodos não privados da classe mãe podem ser herdados. A diferença é que com o estático não existe sobreescrita... Pq a resolução da invocação já é feita em tempo de compilação.