Добавить в цитаты Настройки чтения

Страница 148 из 502

<b>            Width + &quot; и &quot; + Height);</b>

<b>  }</b>

<b>}</b>

<b>// Класс Triangle, производный от класса TwoDShape. </b>

<b>class Triangle : TwoDShape {</b>

<b>  public string Style; // тип треугольника</b>

<b>  // Возвратить площадь треугольника, </b>

<b>  public double Area() {</b>

<b>    return Width * Height / 2;</b>

<b>  }</b>

<b>  // Показать тип треугольника, </b>

<b>  public void ShowStyle() {</b>

<b>    Console.WriteLine(&quot;Треугольник &quot; + Style);</b>

<b>  }</b>

<b>}</b>

<b>class Shapes {</b>

<b>  static void Main() {</b>

<b>    Triangle t1 = new Triangle(); </b>

<b>    Triangle t2 = new Triangle();</b>

<b>    t1.Width = 4.0;</b>

<b>    t1.Height = 4.0;</b>

<b>    t1.Style = &quot;равнобедренный&quot;;</b>

<b>    t2.Width = 8.0;</b>

<b>    t2.Height = 12.0;</b>

<b>    t2.Style = &quot;прямоугольный&quot;;</b>

<div class="fb2-code"><code>&lt;b&gt;    Console.WriteLine(&amp;quot;Сведения об объекте t1: &amp;quot;);&lt;/b&gt;</code></div>

<div class="fb2-code"><code>&lt;b&gt;    t1.ShowStyle(); &lt;/b&gt;</code></div>

<b>    t1.ShowDim();</b>

<b>    Console.WriteLine (&quot;Площадь равна &quot; + t1.Area());</b>

<b>    Console.WriteLine();</b>

<b>    Console.WriteLine(&quot;Сведения об объекте t2: &quot;); </b>

<b>    t2.ShowStyle(); </b>

<b>    t2.ShowDim();</b>

<b>    Console.WriteLine(&quot;Площадь равна &quot; + t2.Area());</b>

<b>  }</b>

<b>}</b>

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

<b>Сведения об объекте t1:</b>

<b>Треугольник равнобедренный </b>

<b>Ширина и высота равны 4 и 4 </b>

<b>Площадь равна 8</b>

<b>Сведения об объекте t2:</b>

<b>Треугольник прямоугольный </b>

<b>Ширина и высота равны 8 и 12 </b>

<b>Площадь равна 48</b>

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

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

<b>class Triangle : TwoDShape {</b>

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

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

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

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

<b>TwoDShape shape = new TwoDShape();</b>

<b> shape.Width = 10; </b>

<b>shape.Height = 20;</b>

<b>shape.ShowDim();</b>