Boa noite pessoal hoje vamos falar um pouco sobre finalização de classes vulgo (Final Classes).
O que são classes finalizadas? bom isso é bem simples de explicar uma classe finalizada é toda classe que não deve ser estendida ou seja quando eu declaro uma classe como finalizada estou dizendo para o meu compilador que NENHUMA CLASSE sob circunstância nenhuma deve extender essa classe (Extends) vamos apresentar um exemplo:
public final class Caneta{
private Cor corCaneta;
private TipoCaneta tipoCaneta;
public void escreveTexto(String texto){
//write something
}
}
Se eu tentar extender a classe Caneta como por exemplo:
public class CanetaExtendida extends Caneta{
//Do something
}
Na hora de compilar a nossa classe o compilador vai apresentar o seguinte erro:
"The type CanetaExtendida cannot subclass the final class Caneta" (caso da Eclipse IDE)
Conclusão:
Classes finalizadas não são usadas normalmente no dia a dia, somente em casos raros em que são realmente necessárias tal como restringir o acesso a uma arvore de classes por exemplo:
*Diagrama
Classe Carro -
|
-> Classe Carro Esporte
-> Classe Final Eclipse
|
-> Classe Carro Sedan
-> Classe Final Honda Civic
Nesse exemplo eu quis dizer que temos duas subclasses de carro que são Carro Esporte e Carro Sedan, ambas classes podem ser extendidas e ter seus comportamentos modificados pelas classes filhas, porém eu não posso extender uma classe que representa o carro Eclipse pois a mesma ja tem a sua especialização implementada com as suas próprias especificações, o mesmo vale para a classe final Honda Civic, são casos raros porém bem uteis quando quero abstrair o mundo real no mundo orientado a objetos.
A todos os meus leitores, gostaria que deixassem comentários enviando sugestões, criticas, elogios, e como sempre se algum de vocês detectarem um erro de sintaxe, de lógica, ou de português mesmo deixem nos comentários, criticas são bem vindas, obrigado e abraço a todos !.
Nenhum comentário:
Postar um comentário