java中父类的非静态方法不能被子类覆盖为静态方法,这是为什么

我想知道这样设计的初衷是什么
2024-10-29 17:52:02
推荐回答(3个)
回答1:

静态方法在类被装载时即已加载
而非静态在运行时用运行时系统确定具体加载的内容,所以非静态方法有可能被覆盖。两种方法内存管理机制完全不同,所以不能覆盖。

回答2:

主要应该还是方法名字问题,如果父类的非静态方法和子类的静态方法名字一样,那么这2个其实是2个不同的方法,非重写的关系。既然是非重写,那么当调用方法的时候,根本就没法判断你调用的是父类的还是子类的方法。

回答3:

难道非静态字段成为静态字段?