继承 - 调用什么方法?

时间:2018-05-17 13:45:55

标签: java inheritance override

我有一个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?

中的重写

2 个答案:

答案 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>