Oi Breno,
Gostaria de saber mais sobre herança de implementação e interface ...
Vamos tentar...
Antes vamos só nivelar alguns conceitos, só para a explicação ficar coerente
com os termos:
CLASSEModelo para a criação de objetos. Onde são definidos os atributos (variáveis de instância) e os métodos que o objeto, após instanciado, terá.
CLASSE ABSTRATAUma classe que possui um ou mais métodos que não tem implementação, ou seja, o método é declarado mas não tem código no seu corpo. Resumindo, você define só a assinatura do método. Veja que podemos ter métodos não abstratos na classe abstrata, mas basta que tenhamos UM único método abstrato para que a classe seja dita abstrata. OBS.: O VFP NÃO reforça este conceito, mas ele pode ser simulado...
INTERFACEA mesma coisa que uma classe que tem TODOS os métodos abstratos. Assim, numa interface só defino as assinaturas dos métodos e não a implementação dos mesmos. Veja que uma interface é "burra" por assim dizer, ou seja, ela só tem assinaturas de métodos e não a implementação deles. Então, para que serve isso? Para definir contratos entre classes.
HERANÇAConceito de OOP onde uma classe é criada a partir de outra, reaproveitando métodos e atributos que já tenham sido definidos na classe base.
Veja o exemplo a seguir (considerando o VFP 7.0):
1) Vamos definir uma classe PESSOA
DEFINE CLASS Pessoa
Nome = ""
FUNCTION Falar(tcFrase as String) as String
RETURN LOWER(tcFrase)
ENDFUNC
FUNCTION Gritar(tcFrase as String) as String
RETURN UPPER(tcFrase)
ENDFUNC
ENDDEFINE
2) Vamos agora definir uma classe PROGRAMADOR que herda de PESSOA:
DEFINE CLASS Programador as Pessoa
FUNCTION Trabalhar() as Void
DO WHILE .T.
ENDDO
ENDFUNC
ENDDEFINE
3) Agora vamos criar um objeto da classe PROGRAMADOR:
loMaluco = CREATEOBJECT("Programador")
?loMaluco.Falar("Eu Sou programador...")
?loMaluco.Gritar("VFP e demais!!!")
Notou que criei um objeto PROGRAMADOR mas usei os métodos "Falar" e "Gritar" que foram definidos na classe PESSOA? Isso é HERANÇA DE IMPLEMENTAÇÃO. Eu não precisei programar estes métodos na classe PROGRAMADOR. Eles foram implementadas na classe PESSOA e o VFP herdou o comportamento (implementação delas).
Para fazer a diferença entre herança de IMPLEMENTAÇÃO e de INTERFACE: Se lembra que uma interface é uma classe que tem métodos que não podem ter implementação? Pois é, está respondida a pergunta. Como eu não posso escrever código em um método que faz parte de uma interface eu teria que reescrever estes métodos na classe PROGRAMADOR!
OBS.: O VFP só reconhece o conceito de interfaces a partir da versão 7.0.
Um abraço!