![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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>
|