// Добавить конструктор в класс Triangle, using System;

11Класс для двумерных объектов.    •

class TwoDShape { double pri_width; double pr.i_height;

// Свойства ширины и длины объекта, public double Width {

get    {    return pri_width; }

set    {    pri_width = value < 0    ?    -value :    value; }

}

public double Height {

get    {    return pri_height; }

set    {    pri_height = value <    0    ?    -value    : value; }

}

public void ShowDim() {

Console.WriteLine("Ширина и длина равны " +

Width + " и " + Height);

}

}

// Класс для треугольников, производный от класса TwoDShape. class Triangle : TwoDShape { string Style;

// Конструктор.

public Triangle(string s, double w, double h) {

Width = w; // инициализировать член базового класса Height = h; // инициализировать член базового класса Style = s; // инициализировать член производного класса

}

// Возвратить площадь треугольника, public double Area() {

return Width * Height / 2;

}

// Показать тип треугольника, public void ShowStyle() {

Console.WriteLine("Треугольник " + Style);

}

}

class Shapes3 {

static void Main() {

Triangle tl = new Triangle("равнобедренный", 4.0, 4.0); Triangle t2 = new Triangle("прямоугольный", 8.0, 12.0);

Console.WriteLine("Сведения об объекте tl: "); tl.ShowStyle(); tl.ShowDim();

Console . WriteLine ("Площадь равна " + tl.AreaO);

Console.WriteLine ();

Console.WriteLine("Сведения об объекте t2: "); t2.ShowStyle(); t2 .-ShowDim () ;

Console.WriteLine("Площадь равна " + t2.Area());

}

}

В данном примере конструктор классаTriangleинициализирует наследуемые члены классаTwoDShapeвместе с его собственным полемStyle.

Когда конструкторы определяются как в базовом, так и в производном классе, процесс построения объекта несколько усложняется, поскольку должны выполняться конструкторы обоих классов. В данном случае приходится обращаться к еще одному ключевому слову языка С#:base,которое находит двоякое применение: во-первых, для вызова конструктора базового класса; и во-вторых, для доступа к члену базового класса, скрывающегося за членом производного класса. Ниже будет рассмотрено первое применение ключевого словаbase.

Вызов конструкторов базового класса

С помощью формы расширенного объявления конструктора производного класса и ключевого словаbaseв производном классе может быть вызван конструктор, определенный в его базовом классе. Ниже приведена общая форма этого расширенного объявления:

конструктор_производного_класса{список_параметров): base(список_аргументов){ // тело конструктора

}

Перейти на страницу:

Похожие книги