progs.biz  
Начало>VB.NET>Основы>Урок 26
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Джон Коннелл. Разработка элементов управления Microsoft .NET на Microsoft Visual Basic .NET
Джон Коннелл. Разработка элементов управления Microsoft .NET на Microsoft Visual Basic .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

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

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

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев