Swing Herança?

Pessoal desculpa minha ignorancia…Talvez até essa pergunta jah tenha sido feita…

Mas qual eh a diferença em criar uma Gui fazendo herança de um JFrame
ou simplesmente instanciando os objetos tipo:


import javax.swing.*;

class gui
{
JFrame frame = new JFrame();
}

ou

import javax.swing.*;

class gui extends JFrame
{
}

Tem alguma diferença de desempenho?? Pq eu aprendi q faze herança somente em ultimo caso…

Olha, até onde eu vejo não há diferença nenhuma.
No conceito de herança você reaproveita uma classe já estabelecida pela API.
Se você importa o pacote swing inteiro isso quer dizer que a classe JFrame está contida nele.
A unica diferença é que se você estende a classe você ja tem uma classe JFrame podendo construíla a vontade, e da outra forma você apenas referencia a classe pura e simplesmente.

A diferença é a abordagem

a sua classe será ou vai ter um JFrame??

aqui tem muitas discussões desse tipo

acho q se vc quiser não deve ser dificil de encontra-la

Depende muito do que você precisa ter e do que você não precisa ter na sua classe. Se ela for um JFrame e vai se beneficiar de tudo o que herdar não vejo problema em herdar. Agora se você vai herdar para se beneficiar apenas de algumas coisas não é uma boa prática herdar, pois isso vai lhe trazer efeitos colaterais que talvez sejam difíceis de resolver e te custe conhecer em detalhes o código do superclasse.

Não diria que a herança deve ser evitada ao extremo, mas sigo a linha de analisar muito bem antes de dar um extends em alguma classe. Se tiver alguma alternativa que não te custe muito, siga.

Blz!

Valeu ai pessoal pelo esclarecimento… :-o
Abraço…

Você poderia citar alguns dos “efeitos colaterais” que a herança traria nesse caso?

Quanto à duvida, creio que já tenha sido respondida: se sua classe é um JFrame use herança. Se ela tem um JFrame, use composição.