为什么在重写超类方法时会调用该方法?(来自OCA实践测试)

里克:

这些OCA练习题(pdf)中的问题3

abstract class Writer {
   public static void write() {
      System.out.println("Writing...");
   }
}

class Author extends Writer {
   public static void write() {
      System.out.println("Writing book");
   }
}

public class Programmer extends Writer {
   public static void write() {
      System.out.println("Writing code");
   }
   public static void main(String[] args) {
      Writer w = new Programmer();
      w.write();
   }
}

输出为Writing...

我不明白为什么。作为Programmer重写Writer的write方法,我认为它应该在中Programmer而不是在中调用该方法Writer

为什么?

Suresh Atta:

您必须在这里了解两点。

对于static成员,没有压倒一切的概念它们是简单的,static并且永远不会根据实例进行更改。

static成员绑定到类,而不是实例。因此,无论实例是什么,它们都会查找被调用并执行的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否有来自具有子类方法仅调用覆盖的超类方法有什么好处?

电池耗尽时会调用什么Android方法?

来自基类方法的重写方法调用如何工作?

如何从修饰的子类方法中调用重写的超类方法

如何调用超类的重写方法?

为什么调用重写方法的超类引用看起来是多态的,但是如果它需要重写成员变量,为什么不是呢?

为什么从子类的超类调用方法中获得“ this”?

为什么我会通过@Override获得“必须重写超类方法”?

在onPause,onStop和onDestroy方法中调用超类方法的正确顺序是什么?为什么?

我怎么知道何时/何处调用超类的重写方法

调整JFrame大小时会调用什么方法?

从打字稿中的超类调用重写的方法

为什么在派生类中调用方法会调用基类方法?

调用在超类中重写的默认接口方法

从超类构造函数调用基类重写方法

为什么我的超类调用我的子类方法?

为什么可以调用超类没有的方法

在调用重写方法的类中测试方法

为什么在调用非静态方法时会调用结构中的静态构造函数?

在Java中,“ this”在继承该方法的子类上调用的超类方法中表示什么?

为什么调用此重写的方法?

为什么存储库类会调用静态加载方法?

重写超类继承的方法

Java中的方法重写。为什么该程序不调用子类方法?

为什么默认情况下会调用超类指定的初始化程序?

为什么从基类调用方法会调用子方法?

如何从重写的子类方法调用超类的继承方法?

为什么在函数返回时会调用(C++ 类的)复制构造函数?

从超类指针向量调用重写的方法