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
Download

Programação Orientada a Objetos