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

}

}

При выполнении этой программы получается следующий результат.

Сведения об объекте tl:

Треугольник равнобедренный Ширина и высота равны 4 и 4 Площадь равна 8

Сведения об объекте t2:

Треугольник прямоугольный Ширина и высота равны 8 и 12 Площадь равна 48

В классеTriangleсоздается особый тип объекта классаTwoDShape(в данном случае — треугольник). Кроме того, в классTriangleвходят все члены классаTwoDShape,к которым, в частности, добавляются методыArea() иShowStyle(). Так, описание типа треугольника сохраняется в переменнойStyle,методArea() рассчитывает и возвращает площадь треугольника, а методShowStyle() отображает тип треугольника.

Обратите внимание на синтаксис, используемый в классеTriangleдля наследования классаTwoDShape.

class Triangle : TwoDShape {

Этот синтаксис может быть обобщен. Всякий раз, когда один класс наследует от другого, после имени базового класса указывается имя производного класса, отделяемое двоеточием. В C# синтаксис наследования класса удивительно прост и удобен в использовании.

В классTriangleвходят все члены его базового классаTwoDShape,и поэтому в нем переменныеWidthиHeightдоступны для методаArea(). Кроме того, объектыtlиt2в методеMain() могут обращаться непосредственно к переменнымWidthиHeight,как будто они являются членами классаTriangle.На рис. 11.1 схематически показано, каким образом классTwoDShapeвводится в классTriangle.

Рис. 11.1. Схематическое представление класса Triangle

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

TwoDShape shape = new TwoDShape (); shape.Width = 10; shape.Height = 20;

shape.ShowDim();

Разумеется, объект классаTwoDShapeникак не связан с любым из классов, производных от классаTwoDShape,и вообще не имеет к ним доступа.

Ниже приведена общая форма объявления класса, наследующего от базового класса.

classимя_производного_класса : имя_базового_класса{

// тело класса

}

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

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