こんばんわ。
いまVB.Net2005でプログラミングをしている者です。
Overrideという機能がありますが,
使い方がよくわかりません。
継承元側で定義したプロシジャ(△△△△)と同じ名前のプロシジャを
派生先側で定義しました。
派生先側でInherits ○○○○として,
派生先側の当該プロシジャ内で,
MyBase.△△△△として,
さらに派生先側の独自の処理を続けました。
このような使い方でよいのでしょうか?
なおこのような使い方をするときに,
わざわざOverride句を指定する必要があるのでしょうか?
初歩的な質問になるかもしれませんが,
教えてください。よろしくお願いします。
No.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のつもりで記述するとそのような動作にならないことになります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseでスタックサイズを変更...
-
split関数で区切り文字がない場合
-
環境変数設定で
-
Eclipse(JAVA)のデバッグで他...
-
Javascriptの値をJava(JSP)へ渡...
-
eclipseのjavaを実行できない
-
Eclipseから実行すると画像が読...
-
JAVAにのeclipseに関する質問で...
-
Eclipseでプログラム実行時に引...
-
コミット前の更新データをチェ...
-
Runtime.exe
-
XPathFactory
-
「ワークスペースをビルド中」...
-
例外処理
-
Javaで年月の取得(YYYYMM形式で)
-
JAVAの質問です。 ( String arg...
-
例外の文法について
-
Spyder上のPythonでinputが実行...
-
Eclipseで自分が書いたコードだ...
-
エクセルマクロエラー'Global'...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
split関数で区切り文字がない場合
-
Javascriptの値をJava(JSP)へ渡...
-
eclipseでスタックサイズを変更...
-
「ワークスペースをビルド中」...
-
Javaで年月の取得(YYYYMM形式で)
-
jdbcでinsert,delete,createをe...
-
JAVAにのeclipseに関する質問で...
-
Eclipse(JAVA)のデバッグで他...
-
環境変数設定で
-
コミット前の更新データをチェ...
-
eclipseのjavaを実行できない
-
jasper.exceptionとは?
-
Worksheet_Changeが動かない
-
javascriptで、style undefined...
-
Eclipseで実行>Javaアプリケー...
-
エクリプスで実行時、最新クラ...
-
NoClassDefFoundError: javax/m...
-
Javascriptのパーミッション
-
eclipseで「サーバーで実行」表...
-
Eclipseで実行できてコマンドプ...
おすすめ情報