Agrupar dados e subrotinas em um único lugar
- Relação com o mecanismo de herança
\pause Algumas questões
- Membros privados da base → visíveis nas derivações?
- \pause Membros públicos na base → continuam públicos?
- \pause Controle da classe base → visibilidade dos seus atrib.?
\pause Encapsulamento através de controladores de visibilidade
- Público, privado e protegido
Classe limita a visibilidade dos seus membros
public:
visível onde a classe está no escopoprivate:
visível dentro dos métodos da própria classeprotected:
como private, mas visível para derivadas- \pause Quebrando estas regras com
friend
- \pause Quebrando estas regras com
\pause Relação através da herança (base, derivada)
- Derivada restringe, jamais aumenta a visibilidade
- Membros privados da base não são visíveis nas derivadas
- Membros públicos e protegidos assim se mantém
- Se
class derivada : protected base
- Membros públicos e protegidos → protegidos
- Se
class derivada : private base
- Membros públicos e protegidos → privados
\pause Alterar visibilidade de membros da base
- Usando
using
dentro da definição da derivada
Atributo → público, privado e protegido
\pause Inútil discustir visibilidade de métodos
- Natureza dinâmica da chamada de métodos
- Tudo é público
- \pause Python tem abordagem semelhante