
- •Различия между наследующим и наследуемым классами :
- •Множественное наследование
- •Конструкторы и наследование
- •Возможны следующие ситуации: 1.
- •constr_title – стандартное начало заголовка конструктора,
- •Пример:
- •//конструктор с одним параметром
- •public void ShowFigure2 ()
- •//конструктор с тремя параметрами
- •public void ShowStyle ()
- •Доступ к переменным и методам и наследование
- •Пример:
- •//конструктор
- •class Class1

Наследование в C#
Основные понятия
Наследование – это один из трех принципов ООП
Наследование направлено на повторное использование кода.
Наследование позволяет определить наследующий (новый) класс как расширение
наследуемого (базового) класса.
1

Различия между наследующим и наследуемым классами :
к наследуемому классу добавляются новые элементы;
возможно изменение реализаций унаследованных функций-членовизменяется их поведение.
2

Множественное наследование
в C# не поддерживается (в отличие от С++)
В простейшем случае синтаксис определения класса имеет вид:
access class child_class_name: parent_class_name
{
Элементы класса
}
Помимо объявленных элементов класса наследующий класс имеет доступ ко всем элементам наследуемого класса, объявленным с уровнем доступа
public или protected.
3

Конструкторы и наследование
Наследуемые и наследующие классы могут иметь свои собственные конструкторы.
При этом каждый конструктор создает (инициализирует)
свою часть создаваемого экземпляра класса.
Можно вызывать конструкторы по умолчанию.
НО, как правило, в каждом классе объявляются свои конструкторы
4

Возможны следующие ситуации: 1.
В наследующем классе определен конструктор, который явно вызывается при создании объекта.
Тогда «часть» объекта, определенная в наследуемом классе, создается автоматически (причем, в первую очередь!)
Это делается с помощью конструктора наследуемого класса, заданного по умолчанию.
5

2.
Конструкторы определены и в наследуемом, и в наследующем классах.
При этом при создании объекта требуется явно вызвать определенный конструктор наследуемого класса.
Вызов конструкторов наследуемого класса
Каждый конструктор наследующего класса может вызвать определенный конструктор наследуемого класса.
Такой вызов обозначается с помощью ключевого слова base.
Меняется только синтаксис заголовка конструктора:
constr_title(param_list) : base (arg_list)
6

constr_title – стандартное начало заголовка конструктора,
param_list - список формальных параметров,
arg_list - список тех аргументов
(из числа формальных параметров), которые передаются конструктору наследуемого класса.
Порядок выполнения конструктора :
1.вызывается конструктор наследуемого класса, у которого список формальных параметров совпадает со указанным списком аргументов;
2.выполняются операторы этого конструктора;
3.выполняются операторы конструктора наследующего класса.
7

Пример:
using System;
namespace Constr
{
//фигура с двумя характеристиками
class Figure2
{
private double width; //ширина
private double height; //высота
//конструктор по умолчанию
public Figure2 ()
{
width=height=0;
}
//конструктор с двумя параметрами
public Figure2 (double w, double h)
{
width=w;
height=h;
}
8

//конструктор с одним параметром
public Figure2 (double x)
{
width=height=x;
}
//определение свойств
public double Width
{
get {return width;}
set {width = value;}
}
public double Height
{
get {return height;}
set {height = value;}
}
9

public void ShowFigure2 ()
{
Console.WriteLine("высота и ширина
фигуры ="+Height+" и "+Width);
}
}
//фигура с тремя характеристиками
class Figure3: Figure2
{
private string style;
//конструктор по умолчанию
public Figure3 ()
{
style = "точка";
}
10

//конструктор с тремя параметрами
public Figure3 (string s, double w,
double h):base(w,h)
{
style = s;
}
//конструктор с одним параметром
public Figure3 (double x): base(x)
{
style = "квадрат";
}
11