超类有dao调用的java继承行为?

use*_*403 0 java inheritance

我有一个代码如下:

Class A{

protected void method1(){

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

}
Run Code Online (Sandbox Code Playgroud)

我还有一个课程扩展了A班:

Class B extends A{

    //some logic

    }
Run Code Online (Sandbox Code Playgroud)

现在执行了多少个数据库调用?一个或两个?

Tom*_*icz 5

如果你这样做:

new B().method1()
Run Code Online (Sandbox Code Playgroud)

method1()只代表B对象调用一次.JVM正在做的是它B.method1()首先尝试查找.如果它被重写B,它会调用它(和完全跳过A.method1()).但由于B没有覆盖它,原来A.method1()被透明地称为.

如果B会覆盖method1()调用原始的唯一方法A.method1()就是调用super.method1()里面B.