[RESOLVIDO] Diferença de declarar uma class com ou sem extends

8 respostas Resolvido
java
P

import javax.swing.JFrame;

Qual a diferença?

public class TelaPrincipal extends JFrame{

}

public class TelaPrincipal{
JFrame tela = new JFrame();

}

8 Respostas

F

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

P

Tem vantagem? ou é só a redução de linha de código?

F

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.

S
Solucao aceita

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.

P

Como boa prática de programação, qual formato você utiliza? ou depende da situação?

S

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.

P

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?

S

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.

Criado 30 de outubro de 2018
Ultima resposta 30 de out. de 2018
Respostas 8
Participantes 3