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

Duvida com objetos

Pessoal porque ao declarar uma variavel de referência ao objeto de uma classe na memoria eu preciso dizer o "o tipo" dela ?

Por exemplo:

 public static void main(String args[]) {

        Conta c1;

        c1 = new Conta();

        Conta c2;
        c2 = new Conta();
    }

Sei que ao fazermos c1 = new Conta(); estamos dizendo "ei C1 estou criando um novo objeto na nossa memoria, de classe conta, e você sera o ponto de contato, entao guarda esse endereço ai!"

Mas nao entendi bem o porque de declararmos Conta c1;

por que nao posso escrever só c1 ?

Abração a todos!

=)

7 respostas

Fala Eduardo! Tive a mesma dúvida que vc no começo. Quando vc da new, o que vc ta fazendo e criar um objeto. Não sei se vc já viu os construtores, mas todo objeto tem um construtor padrão e ele inicializa o objeto . Vc só referência Conta c1 se vc quiser utilizar esse objeto outras vezes. Por exemplo quando quiser adicionar algo a ele. Espero ter ajudado, abraço

Vc só referência Conta c1 se vc quiser utilizar esse objeto outras vezes. Por exemplo quando quiser adicionar algo a ele.

public static void main(String args[]) {

Conta c1;

c1 = new Conta();

Entao o motivo de escrever Conta c1; seria o fato de que vou adicionar dados via atributos e metodos ao objeto via variavel de referencia da classe ?

E referenciamos o objeto a c1 quando damos o sinal de igualdade, certo ?

Isso mesmo!:)

Oi Eduardo,

Isto é uma característica da linguagem, o Java possui tipagem explícita. Ao compilar o código, ele verifica os dois lados da igualdade.

Por exemplo:

  • Quando você declara Conta c1 você está dizendo para o Java: "olha, a minha variável c1 é do tipo Conta então posso acessar os atributos e métodos públicos declarados.

  • Já no caso do outro lado da igualdade, no new Conta() você está dizendo para o Java: "cria pra mim um novo objeto do tipo Conta".

O Java vai checar os dois lados da igualdade:

Conta c1 = new Conta();

Se os dois lados forem compatíveis, seu código compila.

Abraço!

Oi Joviane,

Conta c1 <--- vai ter metodos e atributos da classe estamos passando como tipo.

new Conta(); criamos um novo objeto <--- espaço na memória da classe conta, e passaremos este endereço a c1 através de =

Ficando Conta c1 = new Conta();

Isso ?

:)

Obrigado pela ajuda.

solução!

Isso Eduardo,

Só que o c1 só vai conseguir acessar os métodos e atributos se você criar o novo objeto.

Se por um acaso você fizer:

Conta c1 = null;

Você está declarando uma variável do tipo Conta mas ela não está referenciando nenhum objeto. Ao tentar fazer c1.deposita(100) por exemplo, ocorrerá o erro NullPointerException pois você está tentando acessar uma variável nula.

Espero ter te ajudado!

Abraço!

Obrigado a todos que responderam :)

Me ajudou bastante.

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