dポイントプレゼントキャンペーン実施中!

こんばんわ。
いまVB.Net2005でプログラミングをしている者です。

Overrideという機能がありますが,
使い方がよくわかりません。
継承元側で定義したプロシジャ(△△△△)と同じ名前のプロシジャを
派生先側で定義しました。
派生先側でInherits ○○○○として,
派生先側の当該プロシジャ内で,
MyBase.△△△△として,
さらに派生先側の独自の処理を続けました。
このような使い方でよいのでしょうか?
なおこのような使い方をするときに,
わざわざOverride句を指定する必要があるのでしょうか?
初歩的な質問になるかもしれませんが,
教えてください。よろしくお願いします。

A 回答 (1件)

以下のようなケースを想定してみてはいかがでしょう



public class Base1
  public Overridable Function MySS( ss as String ) as String
    ss += " Base1 "
    return ss
  End Function
End Class

public Class TestA
  Inherits Base1
  Public Overrides Function MySS( ss as String ) as String
    return MyBase.MySS( ss ) + " TestA "
  End Function
End Class

public Class TestB
  Inherits Base1
  Public Function MySS( ss as string) as String
    return MyBase.MySS( ss ) + " TestB "
  End Function
End Class
といった定義にします
TestAはBase1を継承して MySS関数もオーバーライドしています
TestBはBase1を継承していますが MySS関数はオーバーライドしていません

dim obj as Base1, s1, s2 as string
dim objA as TestA
dim objB as TestB

obj = new TestA()
s1 = obj.MySS("Test-A") ' TestA.MySSが呼ばれBase1.MySSも実行
objA = new TestA()
s2 = objA.MySS("Test-A") ' TestA.MySSが呼ばれBase1.MySSも実行
Debug.Print("{0} {1} {2}", (s1 = s2 ), s1, s2)

obj = new TestB()
s1 = obj.MySS("Test-B") ' Base1.MySSのみが呼ばれる
objB = new TestB()
s2 = objB.MySS("Test-B") ' TestB.MySSが呼ばれ Base1.MySSも実行
Debug.Print("{0} {1} {2}", (s1 = s2 ), s1, s2)

このようにして どの場合に何処の関数が実行されているのか確認してみましょう

obj = new TestB()
s1 = obj.MySS("Test-B")
で実行されるのがTestB.MySSのつもりで記述するとそのような動作にならないことになります
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2008/10/19 20:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!