我的代码如下:
Class A{
protected void method1(){
//i have logic which will fetch the results from the database
}
}
我还有一个类扩展了A类:
Class B extends A{
//some logic
}
现在执行了多少个数据库调用?一两个?
答案 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
类时,调用将转到数据库,直到您无论如何调用方法两次