13 skyrius - techmat.vgtu.lt
13 skyrius - techmat.vgtu.lt
13 skyrius - techmat.vgtu.lt
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