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.