Наследование классов. Пример


В С++ класс наследует методы и свойств от своих базовых классов. Наследующий класс называется производным. Когда создаётся объект производного класса, то он содержит все переменные, которые были объявлены в базовом классе и кроме того, дополнительно, объявленные в нём самом. Точно так же к нему можно применять как методы объявленные в нём самом, так и метнды наследованные от базового класса. Если в декларации методов тип возвращаемого значения и типы аргументов совпадают с теми которые были указаны в базовом классе, то происходит перекрытии метода.

Будут вызываться методы в зависимости от класса переменной или указателя. Следует отметить, что в С++ существует множественное наследование, т.е. от многих классов. Каждый их классов в списке базовых указывается со своим атрибутом доступа, который в общем случае изменяет атрибуты наследуемых элементов – переменных (полей) и методов:

class Overdraft1: public BankAccout, protected Cash//список наследования от 2-х классов

{…}

Самостоятельно:

1. назначение атрибута доступа protected

2. влияние атрибутов доступа в списке наследования на атрибуты доступа наследуемых элементов

3. назначение ключевого слова virtual в списке наследования классов; обратить внимание на ситуацию множественного наследования.

 

Пример

Даётся определение класса BankAccount (банковский счёт), который является исходным для реализации других более совершенных классов на его основе:

 

class BankAccount

{

private:

enum {MAX=35};

char fullName[MAX];//имя клиента

long acctNum;//номер счёта

double balance;//текущий баланс

public:

BankAccount(const char* s = "NULLBody",

long an=-1,double bal = 0.0);

void Deposit(double amt);//внесение вклада

void Withdraw(double amt);//снятие со счёта

double Balance() const;//тек. баланс

void ViewAcct() const;//вывод инф. о счёте

};

 

Реализацию дадим позже.

На основе этого класса создаётся новый Overdraft. Он обладает всеми свойствами и поведением исходного класса. Поэтому говорят, что между классами Overdraft и BankAccount реализуется отношение is-a («является тем же»). Новый класс добавляет некие свои переменные и перекрывает некоторые методы, реализуя собственные:

class Overdraft: public BankAccount

{

private:

double maxLoan;//макс значение задолжености

double rate;//тариф процентной ставки

double owesBank;//текущая задолженость

public:

Overdraft(const char* s = "NULLBody",

long an=-1,double bal = 0.0, double ml =500,double r=0.1);

void ViewAcct() const;

void Withdraw(double amt);

void ResetMax(double m){maxLoan = m;}

void ResetRate(double r){rate = r;}

void ResetOwes(){owesBank = 0;}

};

 



Дата добавления: 2016-05-26; просмотров: 1344;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.