Sistemas
Por: lincolnsis • 15/6/2015 • Trabalho acadêmico • 385 Palavras (2 Páginas) • 239 Visualizações
Modificador Abstract
Em uma hierarquia, é útil padronizar os serviços providos pelas classes. Em algumas circunstâncias, desejamos orientar como uma classe deve ser implementada.
Classes Abstratas são aquelas que o programador nunca pretende instanciar nenhum objeto. O único propósito de uma classe abstrata é fornecer uma superclasse apropriada da qual outras classes podem herdar implementações. As classes da qual os objetos podem ser instanciados chamam-se classes concretas.
Uma classe torna-se abstrata declarando-a com a palavra-chave abstract. A idéia de herança por especialização é formalizada através do modificador abstract. Se uma classe for declarada como abstract, deve-se criar uma filha desta classe, pois “não é permitido criar uma instância de uma classe abstrata”, apenas subclasses.
Uma classe abstrata deve ser extendida, ou seja, deve ser a classe base de outra, mas especifica que contenha os detalhes que não puderam ser incluídas na superclasse (abstrata).
Algumas restrições:
- métodos estáticos (static) não podem ser abstratos;
- métodos construtores não podem ser abstratos;
- métodos abstratos não podem ser privados;
Uma classe abstrata ainda pode ter dados de instancia e métodos não-abstract sujeitos às regras normais de herança por subclasses. A classe abstract também pode ter construtores. Tentar instanciar um objeto de uma classe abstract (isto é, uma classe que contem um ou mais métodos abstract) é um erro de sintaxe. Também ocorrerá um erro de sintaxe se uma classe com um ou mais métodos abstract não for explicitamente declarada como abstract.
Por que um método é declarado como abstract? A resposta é que não faz sentido fornecer uma implementação desse método na classe inicial (Empregado, futura superclasse). Tornando esse método abstract, estamos indicando que fornecemos uma implementação em cada subclasse concreta, mas não na própria superclasse (Chefe, TrabalhadorHorista, TrabalhadorPeça, TrabalhadorComissão).
As classes derivadas de uma classe abstrata devem definir o código dos métodos abstratos herdados. Enquanto não for escrito o código do método não será permitida a implementação desta classe.
Abstract class Classe1
{
Public abstract void metodo1();
}
Public class NaoAbstrata extends Classe1
{
Public void metodo1()
{
Códigos;
}
}
As classes também podem ter métodos que não devem ser redefinidos em classes derivadas, que devem ser herdados como foram definidos.
Class Classe1
{
Public final void metodo1();
}
Public class NaoAbstrata extends Classe1
{
Public void metodo1() //Erro
{
Códigos;
}
}
...