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
// тело класса
}