24.03.2015 Views

13 skyrius - techmat.vgtu.lt

13 skyrius - techmat.vgtu.lt

13 skyrius - techmat.vgtu.lt

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Iš rezu<strong>lt</strong>atų aiškiai matyti, kad SafeStack formato objektui s kviečiami klasėje SafeStack<br />

perrašyti metodai. Paskelbkite objektą s Stack formato ir pamatysite, kad programa spausdins 4 iš<br />

steko grąžinamus skaičius, kurių paskutinis bus neapibrėžtos reikšmės – t.y. bus kviečiami<br />

nesaugūs Stack klasės atitinkami metodai.<br />

<strong>13</strong>.5 BENDRASIS IR DALINIS PAVELDIMUMAS<br />

Pirmą kartą skaitydami paveldimumo skyrių, galite šį skyrelį praleisti.<br />

Visose programose anksčiau rodydami, kad išvestinė klasė paveldi savybes iš bazinės,<br />

taikėme bendrąjį paveldimumą: class SafeStack: public Stack { . . . Vietoje raktažodžio public<br />

galima rašyti ir private: tokiu atveju turėsime vadinamąjį dalinį paveldėjimą. Šie terminai nurodo,<br />

kokią prieigą prie bazinės klasės laukų turi išvestinių klasių objektai. Visi galimi prieigos lygiai<br />

parodyti 7 pavyzdžio abstrakčioje, jokios prasmės neturinčioje programoje:<br />

#include <br />

using namespace std;<br />

//<br />

class A{<br />

private:<br />

int privateData;<br />

protected:<br />

int protectedData;<br />

public:<br />

int publicData;<br />

//<br />

A( ): privateData( 0 ), protectedData( 0 ), publicData( 0 ){ };<br />

};<br />

//<br />

class B: public A{ // bendrasis paveldimumas<br />

public:<br />

void m( ){<br />

int data;<br />

//data = privateData; // klaida<br />

data = protectedData;<br />

data = publicData;<br />

};<br />

//<br />

}<br />

class C: private A{ // dalinis paveldimumas<br />

public:<br />

void m( ){<br />

int data;<br />

//data = privateData;<br />

// klaida<br />

174

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!