classexemplo0901extendsJframe{exemplo0901(){setTitle("minha primeira . ..");setSize(400,50);......}publicstaticvoidmain(Stringargs[]){JframeJanela=newExemplo0901();Janela.show();........}
Na declaracao e inicializacao do objeto janela " Jframe Janela=new Exemplo0901();" Poderia ser deste jeito tambem:
Exemplo0901Janela=newExemplo0901();??
Existe alguma diferença entre esses dois metodos de criar um objeto?
Alguem poderia me explicar em detalhes.
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
sergiotabordaPJ
“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 :
Collectionlista=newLinkedList();
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]