Qual a diferença..?

7 respostas
edymrex

Qual a diferença de chamar métodos de uma certa classe ?
tenho dois modelos, qual a diferença entre os dois?

Exemplo chama;
chama.meuMetodo();

para está

Exemplo chama = new Exemplo();
chama.meuMetodo();

bem as duas formas chamam os métodos que estão na classe Exemplo
então qual a diferença…?

7 Respostas

fabiozoroastro

Você testou as duas?
Realiza o teste aí, que você vai ver que vai a primeira vai gerar uma Exception.

Na primeira vc não cria a instancia da classe Exepmlo, portanto, o objeto chama está nulo, e, objetos nulos não podem invocar métodos.
Dê uma boa estudada em Orientação a Objetos.
Abraço.

edymrex

Já estudei cara mas o livro não falava sobre isto

elomarns

Exemplo chama; chama.meuMetodo();
Neste caso, você declara a variável chama, que deverá conter uma referência a um objeto da classe Exemplo, sendo que em nenhum momento você atribui uma referência a esta variável, ou seja, ela não contém valor nenhum, nem mesmo null, pois ela é uma variável local, portanto não recebe um valor padrão, no caso null. E como chama não possui valor algum, você não poderá usá-la na instrução seguinte, já que todas as variáveis devem ser inicializadas antes de serem utilizadas, sejam variáveis primitivas ou variáveis de referência. Por fim, vale mencionar que no exemplo acima, mesmo que chama fosse uma variável de instância, sendo portanto inicializada com null por padrão, seria lançada a exceção NullPointerException em tempo de execução, pois você estaria chamando um método passando null como referência, que seria algo como null.meuMetodo().

Exemplo chama = new Exemplo(); chama.meuMetodo();

Já neste caso, não há problema algum, pois na primeira instrução você declara chama, cria um objeto da classe Exemplo, e em seguida atribui uma referência deste objeto recém criado à variável chama. Sendo assim, na instrução seguinte, o método meuMetodo() será chamado sem problemas, já que havia uma referência a um objeto da classe Exemplo na variável chama.

Espero que tenha esclarecido a sua duvida.

edymrex

Muito obrigado elomarns…!!!
vc foi bem claro na sua explicação me ajudou bastante…!
mais uma vez obrigado!

elomarns

De nada, Puppets. :wink:

F

Vale lembrar que se meuMetodo for static, a seguinte chamada funcionará, apesar de ser completamente bizarra (o eclipse inclusive indica o seguinte warning: “the static method meuMetodo() from the type Exemplo should be accessed in static way”):

Exemplo chama = null;
chama.meuMetodo();
Rodrigo_Manhaes

FLC:
Vale lembrar que se meuMetodo for static, a seguinte chamada funcionará, apesar de ser completamente bizarra (o eclipse inclusive indica o seguinte warning: “the static method meuMetodo() from the type Exemplo should be accessed in static way”):

Exemplo chama = null; chama.meuMetodo();

Bota bizarro nisso! :shock:

Criado 21 de abril de 2007
Ultima resposta 23 de abr. de 2007
Respostas 7
Participantes 5