package com.heima.eclipse;
import java.awt.print.Printable;
import java.lang.reflect.Method;
import java.util.Scanner;
import javax.security.auth.x500.X500Principal;
public class HelloWorld1 {
public static void main(String[] args){
A a = new B();
a.show();
//这种就是多态中的成员访问成员变量:编译看左边,运行看右边。
//对于左边的A a,首先看父类里面有没有show方法,如果有,则编译通过,如果没有的话,系统就会报错。
//再看new B(),在B里面,表面上是没有show方法的,不过B继承了A,因此B里面也是有show方法的,
//在代码中用注释标出,因此B里面的show()运行show2()会运行B里面的show2方法,就会打印出'爱';
B b = new C();
b.show();
//对于左边的B b,首先看父类B里面有没有show方法,如果有,则编译通过,如果没有的话,系统就会报错。
//在B里面,貌似是没有show方法,但是B继承了A,因此B里面还是有一个‘看不见’的show方法,
//再看new C(),在C里面,show()方法里面是super.show(),因此就是B方法里面的show方法,而B中里面的show方法是show2(),
//这个show2()会运行C里面的show2(),因此会打印出‘你’.
}
}
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
/*public void show() {//默认是没有这个的,不过B继承了A的方法。
show2();
}*/
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show() {
super.show();
}
public void show2() {
System.out.println("你");
}
}