Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Inicialização de variável

No curso aprendi que as variáveis de instância/classe são inicializadas com seus valores default antes do construtor ser executado. No código abaixo, vemos uma variável final, então seguindo a lógica, se esta variável é final e é inicializada antes do construtor, por que eu consigo alterá-la dentro do construtor ?

class B{
    private final int b;
    B(int b) { this.b = b;}
    public int getB() { return b; }
    public void setB(int b) { b= b; }
}
class A {
    public static void main(String[] args) {
        B b = new B(10);
        b.setB(5);
        System.out.println(b.getB());
    }
}

será impresso 10

2 respostas
solução!

Lúcio, na verdade ela não foi inicializada antes do construtor.

A variável do tipo final terá o primeiro valor atribuído a ela até o final.

A primeira vez que isso acontece é no construtor. Portanto é atribuído valor 10.

Após isso, a tentativa de setar 5 não funciona, pois é final.

Por fim o getB() retorna 10, que foi o primeiro valor atribuído a essa variável.

valeu Mateus, é que nas aulas é dito que as variáveis de tipo primitivo, são iniciadas com seus valores default antes da execução do construtor, mas acabei percebendo o que aconteceu. obrigado