我有一个A类,它扩展了B类。
A是这样定义的,它也覆盖了B的方法:
class A extends B
{
public A() {
super();
}
@Override
public void doSomething(){
//does something
}
}
B的定义如下:
public class B
{
public B(){
doSomething();
}
public void doSomething(){
//does something
}
}
因此,如果我初始化A的对象,构造函数将调用调用方法doSomething()
的超类之一。但哪一个会被执行? B的实施或A?
答案 0 :(得分:3)
这是一个常见错误,只在构造函数中调用final
方法,将调用来自A
的方法。
顺便说一句Sonar
(如果你有的话)会在这里触发一条规则,说你不应该在构造函数中调用多态方法。
答案 1 :(得分:0)
如果类重写方法,则将调用overriden方法。请尝试以下示例:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="modal-body">
<div class="choose-body">
<div class="choose-my-connection" style="display: block;">
<div class="choose-my-accnt-head">
<h2>My Connections</h2>
</div>
<div class="choose-my-accnt-body ">
<ul class="connection_list_tab" >
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
<li> asjkdjkasd </li>
</ul>
</div>
</div>
</div>
</div>