私はベースクラスと派生クラスを持っていますが、ベースクラスは派生クラスでオーバーライドされる2つのメソッドを持っています。のは、次のシナリオを見てみましょう:今、私は、派生クラスのインスタンスを作成しているベースの空のメソッドを呼び出す派生クラスのインスタンス
私の基本クラス
public class BaseClass
public Overridable function method1()
method2()
End Function
public Overridable function method2()
' Empty !!!
End Function
End class
私の派生クラス
public class DerivedClass
public Overrides function method1()
MyBase.method1()
End Function
public Overrides function method2()
' Some code !!
End Function
End class
と法1()を呼び出します。
Dim obj as new DerivedClass()
obj.method1()
method1()は、ベースのmethod2()を呼び出すベースのmethod1()を呼び出します。私には奇妙なことは、空になっているbase2のmethod2は、派生したメソッド2と呼ばれています! ..
どのようなことが起こっているのか、どのように継承されたメソッドを呼び出すことができますか?この概念にはどのような概念が適用されましたか?
を参照してください。空のオーバーライド可能なメソッドは「仮想メソッド」です。コンパイラは、Emptyメソッドの代わりに、オーバーライドされたメソッドを実行する必要があることをどのように知っていますか? –
@AreejQadomi:*すべての*オーバーライド可能なメソッド(空のメソッドだけではない)は "仮想メソッド"です。コンパイラはそれを知らない。 *実行時*は、オブジェクトの具体的な型が "DerivedClass"であることを知っているので、method2の実装を呼び出す必要があります。そのため、これは "*実行時*多型"と呼ばれます。 – Heinzi