class Fu{
}
public class Zi extends Fu{
public static void main(String[] args) {
Fu fu = new Zi(); //1
Zi zi = (Zi) fu; //2
}
}
这个例子中:
1是多态,向上转型,把引用变量的值赋给了父类中的一个变量(存在于栈中);2就像创建了一个子类对象似的,先把1的变量转化为子类,为什么没new,因为已经new过了,(new时jvm做的动作:先调用构造器初始化,再初始化成员变量),2的左边如1的左边做一样理解。java的多态(成员变量,成员方法,静态方法)都是编译看左边。