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");
}
}