Основы офисного программирования и язык VBA

ремонт стиральных машин candy http://1001-master.ru

Наследование интерфейсов - часть 4


Опять-таки мы ограничились формальной реализацией, определив лишь реализацию метода Father_MyRealMethod:

Option Explicit

Implements Father Implements Son

Private Property Let Father_MyProperty(ByVal RHS As String) 'Реализация отложена

End Property

Private Property Get Father_MyProperty() As String 'Реализация отложена

End Property

Private Sub Father_MyPureMethod() 'Реализация отложена

End Sub

Private Sub Father_MyRealMethod() 'Реализация отложена MsgBox ("It's the GrandSon") End Sub

Private Sub Son_SonNewMethod() 'Реализация отложена

End Sub

Пример 5.2.

Приведем теперь пример процедуры из стандартного модуля, где действуют объекты всех трех классов семейства:

Public Sub Family()

Dim F As New Father, S As New Son, GS As New GrandSon Dim Grand As Father, GrandS As Son

Set Grand = F Grand.MyProperty = "Flat" Grand.MyRealMethod Grand.MyPureMethod Debug.Print Grand.MyProperty Set Grand = S Grand.MyProperty = "Flat" Grand.MyRealMethod Grand.MyPureMethod If TypeOf Grand Is Son Then Set GrandS = Grand: GrandS.SonNewMethod End If Debug.Print Grand.MyProperty

Set Grand = GS If TypeOf Grand Is GrandSon Then Set GrandS = Grand: GrandS.SonNewMethod End If Grand.MyProperty = "Flat" Grand.MyRealMethod Grand.MyPureMethod Debug.Print Grand.MyProperty

End Sub

Пример 5.3.

В этом примере объект Grand класса Father связывается поочередно с объектами класса Father, Son, GrandSon и всякий раз вызываются методы родительского класса, унаследованные потомками. Обратите внимание на конструкцию TypeOf - Is, позволяющую определить текущий тип объекта. В процессе работы этой процедуры будут открываться диалоговые окна, уведомляющие, что мы встретились с объектами Father, Son, Son of his Father, GrandSon. При печати свойств лишь однажды будет напечатано значение Flat.

Уже этот пример показывает, что наследование интерфейсов мало что дает с точки зрения наследования свойств и методов, поскольку ни свойства напрямую не наследуются, ни реализация не наследуется.Наследование интерфейсов представляет несомненный интерес и весьма полезно по другой причине, - оно позволяет реализовать в полной мере полиморфизм семейства классов VBA. К подробному рассмотрению этого вопроса мы сейчас и переходим.




Начало  Назад  Вперед



Книжный магазин