Criacao de objetos

3 respostas
A

Olá, Tenho uma duvida basica sobre java.

class exemplo0901 extends Jframe
{
       exemplo0901()
       {
           setTitle("minha primeira . ..");
           setSize(400,50);

            ......
       }

       public static void main(String args[])
       {
           Jframe Janela=new Exemplo0901();
           Janela.show();

             ........

       }

Na declaracao e inicializacao do objeto janela " Jframe Janela=new Exemplo0901();" Poderia ser deste jeito tambem:

Exemplo0901 Janela=new Exemplo0901();  ??

Existe alguma diferença entre esses dois metodos de criar um objeto?
Alguem poderia me explicar em detalhes.

[color=“red”]*Editado: movido para o fórum Java Básico (Iniciantes). Jair Elton.[/color]

3 Respostas

J

http://pt.wikipedia.org/wiki/Polimorfismo

A 1ª forma é mais vantajosa pois caso você precise mudar a classe depois você não precisa mudar o tipo da variável e nenhum código que usa ela...

ex.:

List lista = new ArrayList();
lista.add("obj1");
lista.add("obj2");
lista.add("obj3");

Iterator ite = lista.iterator();

Se quiser mudar de ArrayList pra LinkedList por exemplo, é só mudar assim:

Lista lista = new LinkedList();

Pode parecer simples, mas a partir do momento que você tem um código grande e principalmente muitos métodos recebendo essa variável como parâmetro, você tem um problemão de manutenção.

Portanto, SEMPRE use o tipo mais genérico possível.

S

“jairelton”:

Portanto, SEMPRE use o tipo mais genérico possível.

Só completando…

Tlv quem ler isto lhe passe desapercebido o possível no fim da fase.
Aquele possivel não significa “tecnicamente possível”, significa “logicamente possível”
Só quero realçar esta frase para que não se pense que o codigo correto na situação anterior seria :

Collection lista = new LinkedList();

Já que este é o código mais genérico possível (tecnicamente).
Mas ele não é logicamente equivalente ao outro. Isto porque List implica que existe uma certa ordem nos elementos e que eles podem ser acessados pela posição que ocupam nessa ordem. Todo o mundo já sabe isto, mas aqui fica o alerta para quem leu aquela frase com leveza.[/u]

A

Valeu!!Obrigado pela explicaçao.

Criado 29 de março de 2007
Ultima resposta 31 de mar. de 2007
Respostas 3
Participantes 3