Base (Доступ к элементу)
 
Обеспечивает явный доступ к элементам базового типа в нестатических методах Type

Синтаксис

Base.member
Base [ .Base ... ] .member

Описание

Base предоставляет возможность явного доступа к элементам конкретного базового типа, в контексте не-статических методов определяемого пользователем типа, производного от другого типа с помощью Extends.

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

Base особенно полезен, когда элемент базового типа затмевается локальной переменной или элементом производного типа, используя тот же идентификатор. Base в этом случае позволяет однозначно получить доступ к базовому типу.

Пример

Type Parent
    As Integer a
    Declare Constructor(ByVal As Integer = 0)
    Declare Sub show()
End Type

Constructor Parent(ByVal a As Integer = 0)
    This.a = a
End Constructor

Sub Parent.show()
    Print "parent", a
End Sub

Type Child extends Parent
    As Integer a
    Declare Constructor(ByVal As Integer = 0)
    Declare Sub show()
End Type

Constructor Child(ByVal a As Integer = 0)
    '' Вызов конструктора базового типа
    Base(a * 3)
    This.a = a
End Constructor

Sub Child.show()
    '' Вызов метода базового типа show(), не наш
    Base.show()
   
    '' Показать оба поля, базового типа и наш
    Print "child", Base.a, a
End Sub

Type GrandChild extends Child
    As Integer a
    Declare Constructor(ByVal As Integer = 0)
    Declare Sub show()
End Type

Constructor GrandChild(ByVal a As Integer = 0)
    '' Вызов конструктора базового типа
    Base(a * 2)
    This.a = a
End Constructor

Sub GrandChild.show()
    '' Вызов метода базового типа show(), не наш
    Base.show()
   
    '' Показать три поля  base.base типа, base типа и наш
    Print "grandchild", Base.Base.a, Base.a, a
End Sub

Dim As GrandChild x = GrandChild(3)
x.show()

Различия диалектов

  • Методы поддерживаются только в диалекте -lang fb, следовательно Base не имеет никакой функции в других диалектах.

Отличия от QB

  • Новое в FreeBASIC

См. также