import javax.swing.JFrame;
Qual a diferença?
public class TelaPrincipal extends JFrame{
}
public class TelaPrincipal{
JFrame tela = new JFrame();
}
import javax.swing.JFrame;
Qual a diferença?
public class TelaPrincipal extends JFrame{
}
public class TelaPrincipal{
JFrame tela = new JFrame();
}
Com o “extends”, você está herdando os atributos e métodos do JFrame (lembrando que em herança não se herda o construtor).
Sem o “extends”, você está instanciando um JFrame novo, através da referência tela.
Ah, e um detalhe óbvio mas importante: No primeiro caso, você está usando noções de herança. No segundo, não.
[]'s
Tem vantagem? ou é só a redução de linha de código?
Existem vantagens, como por exemplo o modificador de visibilidade protected, que permite apenas que as classes filhas tenham acesso aos atributos/métodos.
Nesse caso específico, acredito que tenha algumas vantagens como poder setar os atributos do seu JFrame com o this.
As vantagens da herança incluem também reutilização do código, como você citou em “redução de linha”.
É legal você dar uma estudada nisso. Tem as noções de superclasse, subclasse, enfim…
Aqui tem uma material bacana sobre isso.
E obviamente, não vou deixar de citar o curso fantástico que a Alura tem sobre isso.
Herança não tem nada a ver com redução de código.
Herança você usa quando você quer estabelecer um relacionamento do tipo “é um”.
Quando você escreve
class TelaPrincipal extends JFrame {
}
Você está dizendo que a classe TelaPrincipal é um JFrame.
Quando você escreve:
class TelaPrincipal{
JFrame tela = new JFrame();
}
Você está dizendo que a classe TelaPrincipal tem um atributo do tipo JFrame chamado tela.
Como boa prática de programação, qual formato você utiliza? ou depende da situação?
Depende da situação.
Se você quer criar uma relação do tipo É UM, você estende.
Se você quer criar uma relação do tipo TEM UM, você encapsula.
Sinceramente, agora não entendi esse de “é um” “tem um” poderia me dar um explicação quanto a isso?
é relacionado aos tipos de relação de agregação e composição?
A relação TEM UM está relacionada à agregação ou composição sim.
Diferença básica entre agregação e composição:
Agregação: O objeto pode ter um atributo de determinado tipo.
Composição: O objeto deve ter um atributo de determinado tipo.