有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何选择使用多态性时应调用的方法

我需要一种方法来选择应该调用谁的方法

我正在调用一个父方法,它使用“this”调用它的一个方法。问题是我在类中重写了这个方法,所以当调用父方法时,它会调用我的方法,而不是它的方法

public class MainTest    
{
    public static class A
    {
       public String m1()
       {
             return this.m2();
       }

       public String m2()
       {
           return "A.m2() called";
       }
    }

    public static class B extends A
    {
        @Override
        public String m1()
        {
          return "B.m1() called";
        }

        @Override
        public String m2()
        {
          return "B.m2() called";
        }

        public String m3()
        {
          return super.m1();
        }
    }

    public static void main(String[] args)
    {
        System.out.println(new B().m3());
    }
}

我想实现“A.m2()调用”,但实际输出是“B.m2()调用”


共 (1) 个答案

  1. # 1 楼答案

    为了实现你想要的,你需要在B.m3中调用super.m2()

    调用super.m1()不起作用,因为A.m1调用this.m2()this是运行时类型B(您从未创建过A对象,因此它不能是运行时类型A),因此B中的m2将被调用。你只能调用super.m2()来实现你想要的