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

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


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

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

Рассылка №51

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

Полные версии уроков (с картинками) можно найти по адресам:
Урок 48. Интерфейс как тип данных.

Ч. Петцольд. Программирование для Microsoft Windows на Microsoft Visual Basic .NET. Том 2.
Чарльз Петцольд. Программирование для Microsoft Windows на Microsoft Visual Basic .NET. Том 2
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Уроки по Java
Уроки по Java с самого начала. Основные конструкции языка, классы в Java, создание приложений с графическим интерфейсом, со

Основы 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.

Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


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

В избранное