class Demo_polymorphic{
public static void main(String args[]){
Father f = new Son();父类引用指向子类对象
f.print();//son
/**
*成员方法编译看左边(父类),运行看右边
* 编译是为了检查一些错误,若父类中有print方法则能编译通过
* 若父类中没有print方法则能不编译通过(也叫动态绑定)
*/
f.method;//相当于father.mehod,类名.调用
/**
*静态成员方法编译看左边(父类)运行看左边父类
* 静态和类相关,算不上重写,所以访问还是左边的
* 只有非静态的成员方法,编译看左边,运行看右边
*/
System.out.println(f.num); //10。
/**
*成员变量编译看左边,运行看左边
*/
Son s = new Son();
s.print();//
s.method;
System.out.println(s.num);//20
}
class Father{
int num = 10;
pubilc void print(){
System.out.println("father");
}
public static void method(){//静态
System.out.println("static father")
}
}
class Son extends Father{
int num = 20;
pubilc void print(){
System.out.println("son");
}
public static void method(){
System.out.println("static son")
}
}