Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Class Y: public X






{ int m;

public:

int get_m(void);

void make_m(void);

};

Теперь члены класса Y имеют доступ к членам i, j класса Х. В то же время i, j остаются недоступными для остальной части программы. Доступ наследуется к элементам, объявленным защищенными или общими, но не наследуется для приватных элементов.

 

Пример. Пусть уже имеются такие классы как NAME (содержащий данные об имени человека) и JOB (членами-данными которого являются место работы чело­века и его должность) и необходимо создать класс, содержащий более полную информацию о сотруднике некоторой компании, то кроме перечисленной информации нужно включить возраст и пол. Очевидно, удобно новый класс PERSON сделать наследником уже имеющихся классов NAME и JOB.

Пример: Создадим класс «студент» и класс-наследник «преподаватель».

class Student // Описание классов

{ protected:

char name[50]; // ФИО

int age; // возраст

char sex[50]; // пол

public: Student(char n[], int a, char s[]);

public: void about(void); // Функция вывода информации

};

Class Teach: public Student

{ char subject[50]; // преподаваемый предмет

public: Teach (char n[50], int a, char s[50], char su[50]);

public: void about(void);

};

//--------привычная часть программы-------

#include< stdio.h>

#include< conio.h>

#include< string.h>

//--------------class Student---------------------- //реализация функций классов

Student:: Student(char n[50], int a, char s[50])

{ strcpy(name, n); age=a; strcpy(sex, s); }

void Student:: about(void) //функция вывода информации

{ gotoxy(10, 4); printf(" ФИО: %s", name);

gotoxy(10, 6); printf(" Возраст: %d", age);

gotoxy(10, 8); printf(" Пол: %s", sex); }

//-----------------class Teach--------------(наследник Student'a)

Teach:: Teach(char n[50], int a, char s[50], char su[50]): Student(n, a, s) //используем клаcc Student

{ strcpy(subject, su); } //и добавляем новый член-subject

void Teach:: about(void)

{ Student:: about();

gotoxy(10, 10); printf(" Преподаваемый предмет: %s", subject);

}

//----------------основная программа------------------------

void main()

{

Student *stud;

Teach *teacher;

clrscr();

gotoxy(26, 1);

cprintf(" Студент: ");

stud = new Student(" Петров Петр Петрович", 17, " муж.");

stud -> about();

delete stud;

gotoxy(25, 24);

cprintf(" Нажмите же что-нибудь! ");

getch();

clrscr();

gotoxy(25, 1);

cprintf(" Преподаватель: ");

teacher = new Teach(" Василий Иванович Чапаев", 45, " муж.", " плавание");

teacher -> about();

delete teacher;

gotoxy(25, 24);

cprintf(" Нажмите ЛЮБУЮ клавишу для выхода");

getch();

}

Наследование позволяет передавать все определяемые пользователем свойства класса нескольким классам, наследующим данный класс. Проиллюстрируем передачу режима доступа к переменным при наследовании типа X–> Y–> z.

#include< iostream.h>


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал