Fonte: Material da Prof. Karina K. C. Oliveira Classes Abstratas Classes Abstratas Onde aplicar: Em alguns casos, uma superclasse torna-se to geral que acaba sendo vista como um modelo para outras classes e no como uma classe com instncias especcas que so usadas. No representam um tipo concreto no sistema sendo modelado. Caractersticas No podem ser instanciadas ! new proibido. Pode-se declarar um atributo, varivel ou parmetro de mtodo cujo tipo uma classe abstrata. Podem ter mtodos abstratos: mtodos sem implementao (apenas a assinatura terminada por ponto-e-vrgula). A palavra reservada abstract utilizada para expressar este conceito Classes abstratas Exemplo public abstract class ClasseAbstrata { public abstract void metodo(); } Construindo Objetos Pode-se construir objetos a partir de classes concretas que estendem a classe abstrata, nas quais os mtodos que foram declarados como abstratos receberam uma implementao. Classes abstratas Exemplo public class ClasseConcreta extends ClasseAbstrata { public void metodo( ) { System.out.println("Isto Funciona!"); } } public class Aplicacao { public static void main(String[ ] args) { ClasseAbstrata c1 = new ClasseConcreta(); c1.metodo(); } } Classes abstratas Exerccio 1 Exerccio 1 - Consideraes A classe Funcionario abstrata. O mtodo aumentaSalario() da classe Funcionrio abstrato. As classes Gerente e Programador so concretas. Uma chamada ao aumentaSalario() do Gerente aumenta seu salrio em 10%. Uma chamada ao aumentaSalario() do Programador aumenta seu salrio em 20%. Exerccio 1 - Aplicao Implemente uma aplicao que declara duas variveis do tipo Funcionario e cria dois objetos um do tipo Gerente e outro do tipo Programador. Em seguida, o programa deve oferecer um menu para o usurio com as seguintes opes: Imprimir dados O usurio dever informar se ele deseja imprimir os dados do Gerente ou do Programador. Aumentar salrio O usurio dever informar se ele deseja aumentar o salrio do Gerente ou do Programador. Classes abstratas Exerccio 2 Suponha que queiramos criar diversas classes de carter geomtrico, tais como Triangulo, Quadrado, Circulo, etc. Observe que todas elas devero ter mtodos de clculo de suas respectivas reas e comprimentos. Exerccio 2 - Soluo Neste caso podemos criar uma classe denominada FormaGeometrica, da qual todas as outras herdariam e, dentro desta classe, especicamos os mtodos que as subclasses possuem em comum (rea e comprimento). Iremos fazer isto usando classe e mtodos abstratos! Exerccio 2 - Soluo FormaGeometrica: Classes abstratas Exerccio 3: Transformar a classe InfoCliente do exerccio de Clientes da aula de herana em uma classe abstrata. Classes abstratas Exerccio 4: Implementar,usandoclasse abstrata, o seguinte modelo de classes.