Herança, Classe Abstrata, Encapsulamento e Polimorfismo.
Herança - Quando você precisar construir dois ou mais objetos semelhantes, poderá usar técnicas dinâmicas. Criando uma classe padrão comum a todas a sub-Classes, que recebe os atributos e métodos da super-classe e adicionando suas particularidades em específico. Com esse procedimento ganha-se tempo na implementação de novas classes e fica mais fácil de fazer manutenção.
Encapsulamento - É a capacidade de "esconder" detalhes de implementação (abstração). O principal objetivo é tornar o objeto independente de sua implementação interna, para isso a implementação das suas propriedades e métodos são "escondidas" de forma que o usuário precise apenas conhecer a interface do objeto para poder utilizá-lo. Desta forma o desenvolvedor poderá alterar tranquilamente a implementação de um objeto (Classe) sem causar transtornos ao usuários.
Classe Abstrata - Uma classe abstrata serve para impor uma regra a ser seguida pelas sub-classes, a classe abstrata possui mótodos não implementado que devem ser implementado em uma sub-classe da hierarquia, a classe abstrata não poder ser criada. Para tornar um método abstrato basta adicionar ao final do método as palavras reservadas "virtual" indica que pode ser substituido em uma sub-classe e "abstract" indica que esse método deve ser substituido em uma sub-classe.
Referência : http://www.ufrnet.br/~tcmoises/delphi.htmlPolimorfismo - É a capacidade de tratarmos objetos de diferentes tipos de uma mesma maneira desde que eles tenham um ancestral em comum.
Objetos de classes diferentes podem ter métodos com mesmo nome e cada objeto responderá adequadamente de acordo com seu método.
Métodos da mesma classe podem ter o mesmo nome, desde que possuam quantidade ou tipo de parâmetros diferentes.
Métodos da classe derivada podem ter nomes iguais aos da classe base, inclusive com parâmetros iguais.
Referência : http://www.ufrnet.br/~tcmoises/delphi.html