Java中的静态方法能否被重写?

Tertia ·
更新时间:2024-11-13
· 563 次阅读

  * 非静态方法属于类的实例,是可以被子类重写,从而达到多态的效果;   静态方法属于类,是不能被重写,故而也不能实现多态。 *   下面是具体的验证过程   首先,定义一个超类A,里边定义一个静态方法和一个非静态方法: publicclassA{ publicvoidunstaticMethod(){ System.out.println("SuperClassunstaticMethod"); } publicstaticvoidstaticMethod(){ System.out.println("SuperClassstaticMethod"); } }   接下来,定义一个子类B,里边定义一个静态方法和一个非静态方法(形式上像是重写了超类的方法): public class B extends A { public void unstaticMethod() { System.out.println("SunClass unstaticMethod"); } public static void staticMethod() { System.out.println("SunClass staticMethod"); } }   在接下来,我们进行测试: public class Test { @SuppressWarnings("static-access") public static void main(String[] args) { A a = new A(); A a2 = new B(); a.unstaticMethod(); a2.unstaticMethod(); a.staticMethod(); a2.staticMethod(); } }   运行结果: SuperClass unstaticMethod SunClass unstaticMethod SuperClass staticMethod SuperClass staticMethod   从运行结果,我们可以知道,对于非静态方法,实现了多态的效果,而静态方法却没有。



重写 方法 JAVA 静态 静态方法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号