0

私は以下のようなコードを持っています:

Class A{

protected void method1(){

//i have  logic which will fetch the results from the database
}

}

そして、クラスAを拡張するもう1つのクラスがあります:

Class B extends A{

    //some logic

    }

実行されたデータベース呼び出しの数は? 一つか二つ?

4

2 に答える 2

5

もしあなたがそうするなら:

new B().method1()

method1()オブジェクトに代わって 1 回だけ呼び出されBます。B.method1()JVM が行っていることは、最初に見つけようとすることです。でオーバーライドされた場合はB、それが呼び出されます (完全にスキップされますA.method1())。しかし、Bそれをオーバーライドしていないため、オリジナルA.method1()は透過的に呼び出されます。

Bオリジナルを呼び出すmethod1()唯一の方法は、内部でA.method1()呼び出すことです。super.method1()B

于 2012-08-29T12:26:59.510 に答える
0

Bいずれにしても、オーバーライドされたメソッドでロジックを記述した場合methodm1、クラスに関係なくone呼び出しのみがデータベースに移動し、とにかくメソッドを 2 回呼び出します。

于 2012-08-29T12:31:35.650 に答える