progs.biz  
Начало>VB.NET>Основы>Урок 48
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
Обзор книг
Обзор программ

Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Заказать на Озоне



Яндекс-цитирования

Основы VB.NET
Урок 48. Интерфейс как тип данных

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

Вот пример:

Imports System
'Объявляем интерфейс IPrint.
Interface IPrint
    Sub print()
End Interface
'Класс A - потомок интерфейса IPrint.
Class A
    Implements IPrint
    Private num As Int32
    'Конструктор класса.
    Public Sub New(ByVal num As Int32)
        Me.num = num
    End Sub
    'Реализуем метод интерфейса.
    Public Sub print() Implements IPrint.print
        Console.WriteLine("num={0}", num)
    End Sub
End Class
'Класс B - потомок интерфейса IPrint.
Class B
    Implements IPrint
    Private count As Int32
    Private name As String
    'Конструктор класса.
    Public Sub New(ByVal count As Int32, ByVal name As String)
        Me.count = count
        Me.name = name
    End Sub
    'Реализуем метод интерфейса.
    Public Sub print() Implements IPrint.print
        Console.WriteLine("count={0}, name = {1}", count, name)
    End Sub
End Class
'Класс для тестирования.
Class test
    'Переменные классов A и B.
    Public Shared a1 As New A(12)
    Public Shared b1 As New B(20, "Ivan")
    'Метод с параметром типа IPrint.
    Shared Sub f(ByVal s As IPrint)
        s.print()
    End Sub
    Shared Sub Main()
        'Вызов метода с параметрами.
        f(a1)
        f(b1)
    End Sub
End Class

Как вы видите, тут у нас два класса - A и B являются потомками интерфейса IPrint. Естественно, что в каждом из них мы реализуем метод print этого интерфейса. Далее у нас в классе test есть метод f, принимающий в качестве параметра интерфейс IPrint. Это значит, что в качестве реального параметра для f мы можем подставить экземпляр любого класса - потомка IPrint, что мы и делаем далее. Внутри f вызовется реализация метода print для конкретного класса. Так, например, для нашего примера на консоль выведутся строки num = 12 и count = 20, name = Ivan.

Рассылки нашего сайта на 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 Игорь Алексеев