Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
class Perillinen : [määre] Vanhempi
{
...
}

Wiki Markup
jossa \[määre\] on yleensä _public_ (joskus harvoin protected tai private).

Anchor
esim1
esim1

Esimerkki 1. Periytyminen.

Seuraavassa on esitetty ensin yleinen kantaluokka luokka CElain:

Code Block
class CElain
{
private:   // saatavissa vain luokan funktioilla
    char m_Kutsumanimi[100];
    float m_Massa;

public:   // voidaan käyttää luokan ulkopuolelta
    void AsetaNimi(char Nimi[]);
    char* KysyNimi();
    void AsetaMassa(float Massa);
    float KysyMassa();
};

...

Code Block
class CKissa : public CElain
{
private:   // saatavissa vain luokan funktioilla

public:   // voidaan käyttää luokan ulkopuolelta
    void Kehraa();
};

Luokan Luokka CKissa edustaja perii perii kaikki CElain-luokan ominaisuudet ja toiminnallisuudet (=jäsenmuuttujat ja -funktiot). Mutta ainoastaan protected ja public-tyyppiset CElain-luokan metodit ja jäsenmuuttujattyyppisiin päästään käsiksi CKissa-luokassa. Kts. näkyvyys.

Vanhemman funktioiden ylikirjoitus perillisessä

Perityn luokan funktoita voidaan ylikirjoittaa perillisessä. Kutsuttaessa funktoita perillisen olion kautta suoritetaan perillisessä ylikirjoitettu funktio.

Anchor
esim2
esim2

Esimerkki 2. Funktion ylikirjoitus perillisessä.

Code Block
#include <iostream>

using namespace std;

class CElain
{
public:   // voidaan käyttää luokan ulkopuolelta
    void TulostaLuokanNimi()
    {
        cout << "Luokan nimi on CElain." << endl;
    }
};

class CLehma : public CElain
{
public:
    void TulostaLuokanNimi()
    {
        cout << "Luokan nimi on CLehma." << endl;
    }
};

int main()
{
    CLehma lehma;
    lehma.TulostaLuokanNimi();

    CElain elain;
    elain.TulostaLuokanNimi();
}

...