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

时间:2012-08-29 12:25:32

标签: java inheritance

我的代码如下:

Class A{

protected void method1(){

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

}

我还有一个类扩展了A类:

Class B extends A{

    //some logic

    }

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

2 个答案:

答案 0 :(得分:5)

如果你这样做:

new B().method1()

method1()仅代表B对象调用一次。 JVM正在做的是它首先尝试查找B.method1()。如果B中的覆盖,则会调用它(并完全跳过A.method1())。但由于B没有覆盖它,原始的A.method1()会被透明地调用。

如果B覆盖method1(),则调用原始A.method1()的唯一方法是在super.method1()内拨打B

答案 1 :(得分:0)

如果您在B中使用重写方法编写了逻辑,那么在任何情况下,当您调用methodm1而不管只有one类时,调用将转到数据库,直到您无论如何调用方法两次