GX102 - 2012.2 – Aula05 Classes Abstratas e Interfaces 1 Overview • Modificadores de visibilidade • Classe abstrata • Interface • Interface X Classe abstrata GX102 - 2012.2 - Aula01 • Método Abstrato 2 Modificadores de Visibilidade • Definem quem tem acesso aos atributos e métodos de uma • Public – Todas as classes enxergam • Private – Somente a classe enxerga • Protected – Visível para a hierarquia • Default de classes = Internal (NO C#) GX102 - 2012.2 - Aula01 classe. • Default de métodos/atributos = Private (NO C#) 3 Métodos abstratos • Possui apenas assinatura (Não pode possuir corpo) consequentemente é uma classe abstrata. • Sintaxe : abstract modificador retorno Nome() { } • Podem sofrer override • Não podem ser private GX102 - 2012.2 - Aula01 • Uma classe com um ou mais métodos abstracts, 4 Classe Abstrata • É uma classe que não pode ser instanciada • Usada quando se quer manter um esquema comum entre as subclasses, porém não se deseja instanciar a classe-base. • Sintaxe: abstract (modificador) classe Nome { } • Pode possuir atributos e métodos concretos GX102 - 2012.2 - Aula01 • Abstração de uma classe/ideia 5 Considerações sobre a herança • Todos os métodos abstratos herdados devem sofrer override concretas semelhantes • A visibilidade de uma subclasse não pode ser maior que a de sua classe-base GX102 - 2012.2 - Aula01 • Abstrai-se em uma classe abstract as ideias de classes 6 Interface • Forma de declarar um conjunto de métodos comuns a um • As classes não precisam ser da mesma hierarquia para implementar uma mesma interface • Todos os métodos serão publics • Os métodos não possuem corpo (porém não são abastract) GX102 - 2012.2 - Aula01 conjunto de classes 7 Interface (continuação) • Uma classe deve implementar todos os métodos da interface • Nomenclatura: geralmente usa-se “I” na frente do nome. • Exe: public class Enemy : IDrawable • Você pode acessar a instância de uma classe através de uma referência pertencente à interface implementada. GX102 - 2012.2 - Aula01 que ela usa • Ex: IDraawble referencia = new Enemy(); 8 Herança entre interfaces • Uma interface pode herdar de outra interface • Exemplo: IEnemy: IDrawable, IUpdatable • Alternativa para a herança múltipla GX102 - 2012.2 - Aula01 • Uma interface pode herdar de uma ou mais interfaces 9 GX102 - 2012.2 - Aula01 Problema do diamante 10 Classe abstrata X Interface • Classes abstratas possuem atributos • Classes abstratas podem possuir métodos não abstratos • Interfaces não podem declarar corpo para seus métodos • Ambas não podem ser instanciadas GX102 - 2012.2 - Aula01 • Interfaces não possuem métodos 11