- class A {
- public void show() {
- show2();
- }
- public void show2() {
- System.out.println("我");
- }
- }
- class B extends A {
- public void show() {
- show2();
- }
- public void show2() {
- System.out.println("爱");
- }
- }
- class C extends B {
- public void show() {
- super.show(); //在这里调用了父类的show()方法,这里调用的是show2()
- }
- public void show2() {
- System.out.println("你");
- }
- }
- public class Test2DuoTai {
- public static void main(String[] args) {
- A a = new B(); //多态
- a.show(); //编译看左,运行看右。 打印 "爱"
-
- B b = new C(); //多态
- b.show(); //编译看左,运行看右。打印 "你"
- }
- }
- 总结:
- 只有非静态的方法,是编译看左边,运行看右边。原因是因为:方法有重写。
- 其他(静态方法,成员变量)都是编译看左边(父类),运行看左边(父类)。
复制代码
|
|