Android方法覆盖

Vah*_*yan 6 android overriding

当我们覆盖子类中的方法时,我们在此方法中调用超类方法,例如:

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    width = w ;
    height = h ;

    Log.d(TAG, "onSizeChanged: width " + width + ", height "+ height);

    super.onSizeChanged(w, h, oldw, oldh);
}
Run Code Online (Sandbox Code Playgroud)

那我们为什么要打电话super.onSizeChanged()呢?

我删除了该行super.onSizeChanged(),结果与它相同.

或者在onCreate方法中,我们调用super.onCreate().

MBy*_*ByD 1

有一些方法可以做一些重要的事情,例如 Activity 的 onCreate 和 onPause 方法。如果您在不调用 super 方法的情况下覆盖它们,那么这些事情就不会发生,并且 Activity 将无法正常运行。在其他情况下(通常当您实现接口时),没有您重写的实现,只有声明,因此不需要调用 super 方法。

还有一件事,有时您重写一个方法,您的目的是更改原始方法的行为,而不是扩展它。在这些情况下,您不应调用 super 方法。一个例子是摆动组件的绘制方法。