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

8 respostas Resolvido
java
ProgramadorBR

import javax.swing.JFrame;

Qual a diferença?

public class TelaPrincipal extends JFrame{

}

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

}

8 Respostas

FearX

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

ProgramadorBR

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

FearX

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.

staroski
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.

ProgramadorBR

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

staroski

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.

ProgramadorBR

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?

staroski

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