FreeBASIC マニュアルのトップに戻る

FreeBASIC BASE (メンバ アクセス)

目次→言語リファレンス→変数とデータ型→ユーザ定義型Base←オリジナル・サイト

BASE (メンバ アクセス) 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい


明示的に Type の非静的メソッドで、基本型メンバにアクセスできるようにします。

構文:
base.member
base [ .base ... ] .member

記述:
Base は、明示的に、特定のベース型のメンバーにアクセスできるようにします。
Extends を使っている別の型に由来するユーザー定義型の、非静的メソッドの文脈を使います。

Base を、base.base.base.member のように繰り返し使用することによって、複数レベルの継承でも、希望の基底型にアクセスできます。

Base は、ベース型のメンバーが、同じ識別子を使っている派生型の、局所変数またはメンバーによって陰になるとき、特に役に立ちます。
そして、Base は、ベース型への一義的なアクセスを許可します。

仮想メソッドについては、base.method()は、常にベース・メソッドと、決して上書きされないメソッドを呼びます。

注: 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 型の構築子を呼ぶ
    Base(a * 3)
    This.a = a
End Constructor

Sub Child.show()
    '' base 型の show() メソッド (我々のものでない) を呼ぶ
    Base.show()
   
    '' base 型と我々のものの、両方の項目を表示する'
    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 型の構築子を呼ぶ
    Base(a * 2)
    This.a = a
End Constructor

Sub GrandChild.show()
    '' 我々のものではない base 型の show() メソッドを呼ぶ
    Base.show()
   
    '' 両方の項目を表示する, base.base 型, base 型, 我々の型'
    Print "grandchild", Base.Base.a, Base.a, a
End Sub

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


方言差:

QBからの違い:

参照:
ユーザ定義型 に戻る

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2019-12-16 10:07:00
日本語翻訳:WATANABE Makoto、原文著作者:CountingPine

ホームページのトップに戻る

表示-非営利-継承