1
resposta

Duvida de referencia em Herança

Não entendi este trecho do código:

static A B(String s) -> Pq não da erro de compilação? Este "espaço" entre A e B não consegui entender.

B b = A.B("t"); -> O que este trecho esta fazendo? Onde esta sendo atribuido a literal "t" para a referencia b?

class B { 
    public String s;
    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) {
        B b = A.B("t");
        System.out.println(b.s);
    }
}
1 resposta

static A B(String s) -> Pq não da erro de compilação? Este "espaço" entre A e B não consegui entender.

Desmembrando:

static -> método estático

A -> tipo de retorno do método

B -> nome do método (não é recomendado, pois tem o mesmo nome da classe e causa confusão)

Por que deveria dar erro de compilação na sua opinião?

B b = A.B("t"); -> O que este trecho esta fazendo? Onde esta sendo atribuido a literal "t" para a referencia b?

Não está sendo atribuído em nenhum lugar, pois A não tem acesso à variável "s".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software