Java
Classes abstratas
O primeiro mecanismo de criação de superclasses com declarações mas sem definições de métodos permite a criação métodos declarados como abstratos. Métodos abstratos são somente declarados (com seu nome, modificadores, tipo de retorno e lista de argumentos), não tendo um corpo que contenha os comandos da linguagem que este método deva executar. Se uma classe contém um método declarado como abstrato, as classes que herdarem desta deverão obrigatoriamente implementar o método abstrato com o nome, modificador, tipo de retorno e argumentos declarados na classe ancestral.
Métodos abstratos são declarados com o modificador abstract. Se uma classe tiver algum método abstrato, a classe também deverá obrigatoriamente ser declarada com o modificador abstract. Uma classe que herde de uma classe abstrata deverá, obrigatoriamente, implementar todos os métodos declarados como abstratos na classe ancestral, se houverem métodos abstratos na classe ancestral
Curiosamente, classes abstratas podem ter métodos declarados como estáticos, contanto que estes não sejam abstratos. Métodos estáticos de classes abstratas podem ser executados da mesma forma que métodos estáticos comuns.
Métodos podem ter como tipo de retorno “instâncias” de classes abstratas, contanto que retornem classes não-abstratas que herdam da classe declarada como tipo de retorno do método.
Classes abstratas podem conter métodos não-abstratos que serão herdados e poderão ser utilizados por