Alguém poderia me mostrar “na prática” como utilizo classes abstratas e interfaces, ressaltando suas diferenças…
Grato
vamo ver (sou iniciante)
primeiro é bom vc ter noções de Orientação a Objetos(Conceitos como Classe, objeto, Polimorfismo, etc)
Classe Abstrata é usado com herança, e para usar Polimorfismo:
Por exp vc tem uma classe mae abstrata Quadrilatero cujo metodo tb abstrato(acho) é DesenhaAMimMesmo() (o metodo nao esta implementado)
Suas classes filhas, por exp., sao: Quadrado, Losango.
Cada classe filha herda(extends) atributos e metodos da classe mae. Nesse caso, cada Classe filha Tem um metodo DesenhaAMimMesmo() porem implementa sua propria forma de desenho( Quadrado desenha um quadrado e Losango desenha um losango ).
entao um objeto Quadrilatero pode receber a referencia para um objeto Quadrado e em vez de fazer ObjetoQuadrado.DesenhaAMimMesmo(), posso fazer Quadrilatero.DesenhaAMimMesmo() que desenhara um quadrado, e semelhantemente ao Losango
Interface: classe que nao pode ser instanciada e que cujos metodos abstratos(todos) devem sem implementados pela classe que utiliza a
interface. Por exemplo uma classe que implements ActionListener…
ActionListener é uma interface que contem apenas um metodo a ser definido pela classe…
Até aí até tô sabendo… não to conseguindo vizualizar a vantagem de utilizar uma classe abstrata por exemplo, já que os métodos dela serão implementados um por dps…
O que quer dizer sobrescrever um método? Eu posso colocar ações(um método de print por exemplo) na classe abstrata? A Interface eh uma classe abstrata então não é?
A diferença prática entra classe abstrata e interface é que na classe abstrata o programador pode definir o comportamento de métodos concretos sendo mais flexível e é claro ele tb define os métodos que terão de ser sobreescritos. Já na interface o programador apenas define os métodos que serão sobreescritos e constantes.
Em uma hierarquia de classes as interfaces também possibilitam herança múltipla já que apesar de só poder extender uma classe você pode implementar várias interfaces.