Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

C# и .NET. Уроки с сайта http://progs.biz

Рассылка №9

Основы C#. Урок 19. Абстрактные классы.
Основы C#. Урок 20. Запрещение наследования или модификатор sealed.

Полные версии уроков (с картинками) можно найти по адресам
Урок 19. Абстрактные классы.
Урок 20. Запрещение наследования или модификатор sealed.

Основы C#. Урок 19. Абстрактные классы

Методы класса могут быть объявлены как абстрактные. Это означает, что в этом классе нет реализации этих методов. Абстрактные методы пишутся с модификатором abstract. Класс, в котором есть хотя бы один абстрактный метод, называется абстрактным (а таком классе могу быть и обычные методы). Нельзя создавать экземпляры абстрактного класса - такой класс может использоваться только в качестве базового класса для других классов. Для потомка такого класса есть две возможности - или он реализует все абстрактные методы базового класса (и в этом случае для такого класса-потомка мы сможем создавать его экземпляры), или он реализует не все абстрактные методы базового класса (в этом случае он является тоже абстрактным классом и единственная возможность его использования - это производить от него классы-потомки). Вот пример, иллюстрирующий использование абстрактных классов:

using System;
namespace test
{
    abstract class Figure
    {
        //Площадь фигуры
        public abstract double square();
        public abstract double perimeter();
    }
    class Triangle: Figure
    {
        double a, b, c; //Стороны
        //Конструктор
        public Triangle(double a, double b, double c)
        {
            this.a=a;
            this.b=b;
            this.c=c;
        }
        public override double square()
        {
            //Используем формулу Герона
            double p = (a+b+c)/2;
            return Math.Sqrt(p*(p-a)*(p-b)*(p-c));
        }
        public override double perimeter()
        {
            return a+b+c;
        }
    }
    class Rectangle: Figure
    {
        double a, b; //Стороны
        //Конструктор
        public Rectangle(double a, double b)
        {
            this.a=a;
            this.b=b;
        }
        public override double square()
        {
             return a*b;
        }
        public override double perimeter()
        {
            return (a+b)*2;
        }
    }
    class Test
    {
        public static void Main()
        {
            Figure f1, f2;
            f1=new Triangle(3, 4, 5);
            f2=new Rectangle(2, 6);
            System.Console.WriteLine(f1.perimeter()+", "+ f1.square());
            System.Console.WriteLine(f2.perimeter()+", "+ f2.square());
        }
    }
}

Тут мы объявляем абстрактный класс Figure, от которого производим два класса - Rectangle (класс прямоугольника) и Triangle (треугольника). В классе Figure есть два абстрактных метода - square (для подсчета площади) и perimeter (для периметра). Так как для призвольной фигуры формул для площади и для периметра не существует, то эти методы объявлены в классе Figure и переопределены в производных классах (с ключевым словом override). Далее в классе Test мы проводим испытание - заводим две переменные типа ссылка на базовый класс Figure, ниже в эти ссылки мы записываем созданные экземпляры производных классов Triangle и Rectangle. Обратите внимание, что ссылку на абстрактный класс мы создать можем, а экземпляр - нет. Далее мы выводим на экран периметр и площадь для наших фигур.

Наверх

Основы C#. Урок 20. Запрещение наследования или модификатор sealed

На прошлом уроке мы рассмотрели абстрактные классы. Их основное назначение - быть предками для других классов. На другом конце иерархии стоят так называемые sealed-классы. От них нельзя производить другие классы. Синтаксис для тах такой же, как и для обычных классов, за исключением ключевого слова sealed. Вот пример:

    ...
    sealed class MyClass
    {
        //Методы и переменные класса
        int x;
        ...
    }
    class MyClass2: MyClass //Ошибка!
    {
        ...
    }
    ...

Как вы видите, от sealed-класса MyClass нельзя делать классы-потомки.

Наверх

Другие рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по Java

Уроки по Java с самого начала. Основные конструкции языка, классы в Java, создание приложений с графическим интерфейсом, создание апплетов, работа в JBuilder от Borland'а, сетевые приложения.


Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное