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

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


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

Основы VB.NET. Уроки с сайта http://progs.biz

Рассылка №23

Основы VB.NET. Урок 26. Основы VB.NET. Урок 26. Интерфейсы в VB.NET.

Полные версии уроков (с картинками) можно найти по адресам
Урок 26. Основы VB.NET. Урок 26. Интерфейсы в VB.NET.

Основы VB.NET. Урок 26. Интерфейсы в VB.NET

Интерфейс можно представлять себе как абстрактный класс, в котором есть только объявления методов и свойств (хотя это представление и несколко упрощено). Никаких реализаций в интерфейсе нет. В интерфейсе также не может быть никаких переменных - только свойства.

Мы можем объявить некоторый класс как потомок интерфейса. В этом случае класс должен реализовывать все методы и свойства интерфейса. Собственно говоря, интерфейсы и служат предками для классов (или для других интерфейсов) - в этом их главное предназначение и есть.

Один класс можно объявить как потомок от нескольких интерфейсов одновременно. Т. е. у такого класс будет несколько пап.

Переходим к конкретному примеру:

'Объявление интерфейса
Interface IMyInterface
    Function SomeFunc() As String
    Sub SomeProc()
    Property SomeProp() As Int32
End Interface
'Объявление класса
Class MyNewClass
    Implements IMyInterface
    Private SomeData As Int32
    'Реализация функции интерфейса
    Function SomeFunc() As String Implements IMyInterface.SomeFunc
        Return "Some string"
    End Function
    'Реализация процедуры интерфейса
    Sub SomeProc() Implements IMyInterface.SomeProc
        Console.WriteLine("Some procedure")
    End Sub
    'Реализация свойства интерфейса
    Property SomeProp() As Int32 Implements IMyInterface.SomeProp
        Get
            Return SomeData
        End Get
        Set(ByVal Value As Int32)
            SomeData = Value
        End Set
    End Property
End Class

Обсуждение кода. Сначала мы объявляем интерфейс:

Interface IMyInterface
    Function SomeFunc() As String
    Sub SomeProc()
    Property SomeProp() As Int32
End Interface
 ...

Как вы видите, для этого мы используем ключевое слово Interface. В интерфейсе мы объявляем функцию, процедуру и свойство. Имена интерфейсов принято, кстати, начинать на букву I. Еще раз обратите внимание, что в интерфейсе никакой реализции нет - все будем реализовывать в классе, производном от интерфейса.

Затем мы объявляем класс MyNewClass как потомок интерфейса IMyInterface. Об этом нам говорит строка

Class MyNewClass
    Implements IMyInterface
    ...

Внутри класса мы должны написать реализацию всего того, что мы объявили в интерфейсе. В каждой такой реализации мы должны написать, что именно она из интерфейса реализовывает. Это мы делаем с помощью ключевого слова Implements:

    ...
    Function SomeFunc() As String Implements IMyInterface.SomeFunc
        ...
    End Function
    ...
    Sub SomeProc() Implements IMyInterface.SomeProc
        ...
    End Sub
    ...
    Property SomeProp() As Int32 Implements IMyInterface.SomeProp
        ...
    End Property

Используется такой класс точно также, как и любой другой.

Класс мы пожем объявлять потомком не одного, а нескольких интерфейсов:

Class MyNewClass
    Implements IMyInterface1
    Implements IMyInterface2
    ...
End Class

При этом в разных интерфейсах могут быть функции, которые называются одинаково (путаницы не будет, так как имя функции мы пишем после точки, следующей за именем интерфейса). Это верно, разумеется, и для свойств и процедур.

Если наш класс есть потомок некоторого интерфейса, то он должен реализовывать все функции, процедуры и свойства этого интерфейса.

Наверх

Рассылки сайта progs.biz:

Рассылки Subscribe.Ru
Уроки по C++ Builder

Уроки по программированию на C++ Builder. Библиотека VCL, создание собственных компонентов, работа с базами данных, примеры, FAQ. Уроки разбиты на серии. Каждая серия независима от других.


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

Copyright сайт progs.biz, 2002



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

В избранное