メソッドの動作が実装されている抽象クラスがある場合、および動作が実装されていない場合のメソッド呼び出しの順序はどのようになっていますか?
私の抽象クラスがAbsと呼ばれ、Sub1とSub2の2つのサブクラスがあるとします。
ケース1の場合、AbsにはメソッドMeth1の実装コードが含まれています
public abstract class Abs{
public void Meth1(){
//Some code
}
}
完全に異なるクラスで、私はメソッドを持っています:
MyMethod(Abs a){
a.Meth1();
}
ここで、Absの代わりにSub1またはSub2のいずれかを渡します
ケース2の場合、Absには実装コードが含まれていません(ただし、Sub1とSub2には含まれています)
public abstract class Abs{
public abstract void Meth1();
}
そして私は同じことを呼びます:
MyMethod(Abs a){
a.Meth1();
}
Sub1またはSub2のいずれかを渡した後。
それぞれの場合のメソッド呼び出しの順序は何ですか?それは常にスーパークラスのAbsに行き、次にサブクラスに行きますか?サブクラスがパラメーターとして渡されたため、最初にサブクラスに移動しますか?次に、JVMはサブクラスに実装コードが提供されているかどうかを確認し、提供されていない場合は、実装コードがある場合はスーパークラスメソッドが呼び出されますか?