Programar em C++/Herança: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
Sem resumo de edição |
||
Linha 32:
----
== Inheritance between classes ==
A questão da Inherence é levar esta questão das classes vais á frente e trabalhar com elas.
== Derivar uma classe de uma outra ==
Para derivar uma classe de outra usamos o operador “:”
class derived_class_name: public base_class_name
{
…
};
Vamos ao exemplo:
// derived classes
#include <iostream>
using namespace std;
class CPolygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
class CRectangle: public CPolygon //aqui está a derivação
{
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon //outra derivação
{
public:
int area ()
{ return (width * height / 2); }
};
int main ()
{
CRectangle rect;
CTriangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << rect.area() << endl;
cout << trgl.area() << endl;
system (“pause”);
return 0;
}
Neste exemplo temos 2 classes que são derivadas (filhas) da classe CPolygon. O que faz é permitir aceder á função set values e ás variáveis width e height.
Mas vocês dizem-me que como é que é possível aceder a width e height se ela está '''protected'''.
'''A diferença com o private reside exactamente no facto das classes derivadas poderem aceder aos elementos protected mas não os private.'''
Podemos sintetizar então
{| border 1
|Access|| public || protected ||private
|-
|members of the same class|| yes || yes ||yes
|-
|members of derived classes|| yes || yes|| no
|-
|not members || yes || no || no
|}
'''Nota''':
* Claro que uma classe pode ser derivada de várias outras classes.
|