Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Методы класса могут быть объявлены как абстрактные. Это означает, что в этом классе нет реализации этих методов. Абстрактные методы пишутся с модификатором abstract. Класс, в котором есть хотя бы
один абстрактный метод, называется абстрактным (в таком классе могут быть и обычные методы). Нельзя создавать экземпляры абстрактного класса — такой класс может использоваться только в качестве базового класса для других классов. Для потомка такого класса есть две возможности — или он реализует все абстрактные методы базового класса (и в этом случае для такого класса-потомка мы сможем создавать его экземпляры), или реализует не все абстрактные методы базового класса (в этом случае он является тоже абстрактным классом, и единственная возможность его использования — это производить от него классы потомки). Вот пример, иллюстрирующий использование абстрактных
классов:
using System;
namespace test
{
abstract class Figure
{
//Площадь фигуры
public abstract double square();
public abstract double perimeter();
}
class Triangle: Figure
108 Раздел I I. Фундаментальные понятия
double а, Ь, с; //Стороны
//Конструктор
public Triangle (double a, double b, double с)
{
this.a=a;
this.b=-b;
this.c=c;
I
public override double square()
{
//Используем формулу Герока
double p - (aib+c)/2;
return Math.Sqrt(p*(p-a)* (p-b)* (p-c));
I
public override double perimeter()
i
return a-ib+c;
class Rectangle: Figure
{
double a, b; //Стороны
//Конструктор
public Rectangle(double a, double b)
{
this.a=a;
this.b=b;
}
public override double squared
{
return a*b;
}
public override double perimeter!)
!
return (afb)*2;
}
}
class Test
{
public static void Main()
t
Figure fl, f2;
fl=new Triangle(3, 4, 5);
f2=new Rectangle(2, 6);
System.Console.WriteLine(f1.perimeter()i", "+ f1.square()
System.Console. WriteLine (f 2.perimeter ()•+", "+ f 2. square ()
Результаты работы программы отобразятся как:
12, 6
16, 12
Тут мы объявляем абстрактный класс Figure, от которого производим два класса — Rectangle (класс прямоугольника) и Triangle (треугольника). В классе Figure есть два абстрактных метода — square (для подсчета площади) и perimeter (для периметра). Так как для произвольной фигуры формул для площади и для периметра не существует, то эти методы объявлены в классе Figure и переопределены в производных классах (с ключевым словом override). Далее в классе Test мы проводим испытание — заводим две переменные ссылочного типа базового класса Figure, ниже в эти ссылки мы записываем созданные экземпляры производных классов Triangle и Rectangle. Обратите внимание, что ссылку на абстрактный класс мы создать можем, а экземпляр — нет. Далее мы выводим на экран периметр и площадь для наших фигур.
Дата публикования: 2014-11-18; Прочитано: 243 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!