インターフェースを実装したインターフェースを実装する

インターフェースを実装したインターフェースを実装する

何言ってんだか、わかんねえだろ? おれもよくわかっていねえんだ。

インターフェースを実装したインターフェース

まず、一つインターフェースを作る。

リスト1 クラスモジュール IA
Option Explicit

Public Sub aa()

End Sub

実験用だから、全てが投げやり。IAというインターフェースで、aaというメソッドを指定している。

で、次に、このインターフェースIAを実装したインターフェースを作る。

スト2 クラスモジュール IB
Option Explicit

Implements IA

Public Sub IA_aa()

End Sub

Public Sub bb()

End Sub

インターフェースIAを実装したのだから、IA_aaメソッドは必須。さらに、bbメソッドを指定した。

これでインターフェースの準備は完了。

インターフェースを実装したインターフェースを実装したクラスを作る

では、上で作成したインターフェースIAを実装したインターフェースIBを実装したクラスを作る。

リスト3 クラスモジュール Hoge
Option Explicit

Implements IB

Public Sub IB_IA_aa()
  Call MsgBox("ち~んw")
End Sub

Public Sub IB_bb()
  Call MsgBox("(゚∀゚)アヒャ")
End Sub

実装したインターフェースはIB。ゆえに、インターフェースIBが指定している二つのメソッドIA_aabbを装備すれば良いはずだ。

インターフェース名をメソッド名の頭にスネーク記法で付けるのがルールなので、IB_IA_aaIB_bbとすれば、まさに万全。鉄壁の布陣。八門金鎖の陣を敷いた曹仁も驚きだろう。

Hogeクラスを使ってみる

標準モジュールに次のコードを書いてHogeクラスを使ってみる。

リスト4 標準モジュール
Private Sub test01()
  Dim b As IB
  Set b = New Hoge
  Call b.IA_aa
  Call b.bb
End Sub

コーディング中には、

f:id:akashi_keirin:20191020182225j:plain

こんなふうにヒントも出る。

いやが上にも胸が高鳴るではないか!!!!!!!!!!!!!!!!!

実行

震える手で実行ボタンをクリック……

f:id:akashi_keirin:20191020182229j:plain

な……、なんだってーーー!

あえなくコンパイル エラー……。

(´・ω・`)ショボーン

おわりに

何がいけないのでしょう……。