オーバーライドとオーバーロードのバグ

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
高信期

オーバーライドとオーバーロードのバグ

#1 投稿記事 by 高信期 »

抽象クラスを継承したクラスに仮想メソッドと同名のメソッドを持たせると意図しない動作をします。
AB ver 5 CP1で確認しました。

コード: 全て選択

InterFace IAnimal
  Sub Sing()
End InterFace

Class CDog
  inherits IAnimal
Public
  Sub Sing()          ' override
    Print "わんわん"
  End Sub

  Sub Sing(I As Long) ' overload
    Dim A As Long
    For A = 0 To I - 1
      Print "わん"
    Next A
  End Sub
End Class

Dim Animal As *IAnimal
Animal = new CDog
Animal->Sing()
delete Animal
End
そこで要望なのですが、Abstract修飾子やVirtual修飾子のように
オーバーライドするメソッドにOverride修飾子をつけるようにすると
コードの可読性が高まると思うので導入を検討していただけませんでしょうか?
ご考慮のほどよろしくお願いいたします。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#2 投稿記事 by イグトランス »

その案には賛成です。
ただしVB .NETに合わせてOverridesの方が良いと思います。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#3 投稿記事 by 山本 »

確かに、オーバーロードが絡んでくるとこのバグを回避しても、仕様上分かり辛いかもしれませんね。

しかし、Override修飾子によるコードの冗長化が気になります。まぁ、Override修飾子が付くような状況では、VirtualもAbstractもつくことはあませんし…。

皆さんはその辺り、どのように思われますでしょうか?因みに、お二人が仰るように、C#ではoverirde修飾子が、VB.NETではOverrides修飾子が導入されていることは事実なようです。
返信する