3
respostas

DÚVIDA SOBRE VARIÁVEIS NO JAVA

Olá pessoal, vi que no Java as variáveis guardam referências para os objetos atribuidos a ela, mas o que extamente é o valor a esquerda que passamos antes do nome da variável ? Isso me dá um nó na cabeça.

EXEMPLO:

ContaPoupanca cp = new ContaPoupanca(222, 222);
        cp.deposita(200.0);

Porque tenho que atribuir o mesmo tipo do objeto ou um tipo mais genérico (Nesse caso um tipo mais genérico poderia ser Conta, já que ContaPoupanca herda de Conta) ? Porque não poderia ser só:

        cp = new ContaPoupanca(222, 222);
        cp.deposita(200.0);

Já que cp vai servir só como uma forma de encontrar meu objeto ContaPoupanca na memória ?

3 respostas

Esse é o tipo da referência. No seu exemplo você indica que sua cp é uma referência do tipo ContaCorrente, se você utilizasse uma referência do tipo Contaseu código compilaria, porém você só conseguiria utilizar os métodos herdados da classe Conta ou seja, os métodos específicos da classe ContaCorrentenão funcionariam. Na liguagem Java é assim pois é uma linguagem fortemente tipada.

O Java é uma linguagem fortemente tipada, por isso não aceita isso que você sugeriu.

Você precisa atribuir para ficar claro que tipo de objeto você está criando, por mais que depois você passe um " New ContaPoupanca", mas por que isso?

É fácil, basta entender que o New instancia um novo objeto, então você está colocando esse novo objeto dentro de - CP - mas antes, você precisa dizer o que é o cp ? O Java não entende apenas pelo valor que está sendo colocado dentro da variável ou do objeto. é preciso colocar um " tipo " antes de atribuir qualquer valor para a variável/objeto.

Como exemplo aqui... o Java não entende que a variável texto é uma String, mesmo ela recebendo uma String. texto = "OI";

Boa tarde Douglas!

A esquerda do = você está definindo o "tipo do rotulo" e o "rotulo da variável"(nome). Já a direita do = o new reserva um espaço na memória e o tipo de variável que você passar é a que ficará armazenada nesse espaço.

O nico explica um pouco sobre isso nos capitulo 3 polimorfismo, recomendo revisar se ainda tiver com dúvidas.

você também pode usar a palavra reservada var dessa forma:

        var cp = new ContaCorrente(222, 222);

Assim ele atribuirá o tipo da variável armazenada na memória ao rótulo.

Passar bem e bons estudos :)