java中的多态性(关于对象向下向上转型的解释)

package asrfasf;
class Man{
	public void print(){
		System.out.println("像一个正常人的生活、学习、工作 ");
	}
}
class SupperMan extends Man{
	public String fly(){
		return "会飞";
	}
	public String fire(){
		return "会喷火";
	}
}
public class Demo3 {
	//java程序入口
	public static void main(String[] args) {
		System.out.println("---------正常状态下的超人应该是一个普通人--------- ");
		Man man=new SupperMan();      //向上转型(将超人自动转为人)
		man.print();
		System.out.println("--------灾难常状态下的超人应该是一个超人--------- ");
		SupperMan superman= (SupperMan)man;//向下转型(将人强制转为超人)
		System.out.println(superman.fire());
	}
}

向上描述的是一些公共的特征(小转大,自动转),向下描述的的子类自己特殊的定义环境(大转小,强制转),但是向下具有安全隐患,因为在向下转型前一定要发生向上转型!!!!两个没有关系的实例进行转型会发生异常(ClassCastException).

猜你喜欢

转载自blog.csdn.net/qq_20799821/article/details/103494950