System.out.println(p.var); //编译期静态绑定p所声明的类型(Person)
p.method(); //运行时调用p所引用的实例对象(Male)的方法
//男人是人,女人是人,人不一定是男人,也不一定是女人,只有原来是男人的人才能转化成男人
p = new Person();
//m = (Male)p; //编译时通过,运行时异常 将人转化成男人
p = new Male(); //将人实例化成男人
//Famale f = (Famale)p; //编译时通过,运行时异常 将男人转化成女人
m = (Male)p; //正确 将原本是男人的人转化成男人
}
}
class Person {
String var = "Person var";
String pVar = "Person pVar";
public void pMethod(){
System.out.println("Person method");
}
public void method(){
System.out.println("Person method");
}
}
class Male extends Person{
String var = "Male var";
String mVar = "Male sVar";
public void mMethod(){
System.out.println("Male method");
}
public void method(){
System.out.println("Male method");
}
}
class Famale extends Person{
String var = "Famale var";
String mVar = "Famale sVar";
public void fMethod(){
System.out.println("Famale method");
}
public void method(){
System.out.println("Famale method");
}
}