私は以下のようなコードを持っています:
Class A{
protected void method1(){
//i have logic which will fetch the results from the database
}
}
そして、クラスAを拡張するもう1つのクラスがあります:
Class B extends A{
//some logic
}
実行されたデータベース呼び出しの数は? 一つか二つ?
私は以下のようなコードを持っています:
Class A{
protected void method1(){
//i have logic which will fetch the results from the database
}
}
そして、クラスAを拡張するもう1つのクラスがあります:
Class B extends A{
//some logic
}
実行されたデータベース呼び出しの数は? 一つか二つ?
もしあなたがそうするなら:
new B().method1()
method1()オブジェクトに代わって 1 回だけ呼び出されBます。B.method1()JVM が行っていることは、最初に見つけようとすることです。でオーバーライドされた場合はB、それが呼び出されます (完全にスキップされますA.method1())。しかし、Bそれをオーバーライドしていないため、オリジナルA.method1()は透過的に呼び出されます。
Bオリジナルを呼び出すmethod1()唯一の方法は、内部でA.method1()呼び出すことです。super.method1()B
Bいずれにしても、オーバーライドされたメソッドでロジックを記述した場合methodm1、クラスに関係なくone呼び出しのみがデータベースに移動し、とにかくメソッドを 2 回呼び出します。