Java 这个方法的解释?

Java 这个方法的解释?,java,polymorphism,Java,Polymorphism,为什么method1()调用类A的method2()调用类B的method1()而不是类A的method1()而调用类B的method1()呢在运行时类型为B的实例上,将执行类B的method1()。调用method1()是从类amethod1()的方法执行的,这并不重要,因为调用时“this”引用引用类型为B(),而调用时查看代码时,super.method2()只是调用method2()来自类A 因此,尝试通过复制和粘贴来简化一切;这样类B就变成: public class A {

为什么
method1()
调用类
A
method2()
调用类
B
method1()
而不是类
A
method1()
而调用类
B
method1()
呢在运行时类型为
B
的实例上,将执行类
B
method1()。调用
method1()
是从类
a

method1()的方法执行的,这并不重要,因为调用时“this”引用引用类型为B(),而调用时查看代码时,
super.method2()
只是调用
method2()
来自类
A

因此,尝试通过复制和粘贴来简化一切;这样类
B
就变成:

public class A {
    public void method1() {
        System.out.print(" A1");
    }

    public void method2() {
        method1();
        System.out.print(" A2");
    }
}

public class B extends A {
    public void method2() {
        super.method2();
        System.out.print(" B2");
    }

    public void method1() {
        System.out.print(" B1");
    }
}

public class B2 {
    public static void main(String args[]) {
        B b = new B();
        b.method2();
    }
}
在这里,您可以清楚地看到,当运行行
b.method2()
时,它将按从上到下的顺序运行:

  • method1()
    -这将打印“B1”
  • 打印“A2”
  • 打印“B2”

  • 我希望这能解释更多。

    我听不懂你的问题!
    public class B extends A {
        public void method2() {
            method1();
            System.out.print(" A2");
            System.out.print(" B2");
        }
    
        public void method1() {
           System.out.print(" B1");
        }
    }