阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第16章:多态性:课时77:对象向下转型

向下转型主要特点在于需要使用到一些子类自己特殊的定义处理。
在这里插入图片描述
范例:实现向下转型

class Person {
	public void print() {
		System.out.println("一个正常的人类行为,吃饭、睡觉、繁衍。");
	}
}
class SuperMan extends Person {
	public String fly() {
		return "我可以飞。。。";
	}
	public String fire() {
		return "我可以喷火。。。";
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		System.out.println("--------- 正常状态下的超人应该是一个普通人的状态 ----------");
		Person per = new SuperMan() ; // 向上转型
		per.print();
		System.out.println("--------- 外星怪兽狗骚扰地球,准备消灭人类 ----------");
		SuperMan man = (SuperMan) per ;  // 向下转型
		System.out.println(man.fly());
		System.out.println(man.fire());
	}
}

向上描述的是一些公共的特征,而向下描述的是子类自己特殊的定义环境,但是需要明确的是,向下转型并不是一件安全的事情。因为在进行向下转型之前一定要首先发生向上转型。
范例:观察错误的程序

public class JavaDemo {
	public static void main(String args[]) {
		System.out.println("--------- 正常状态下的超人应该是一个普通人的状态 ----------");
		Person per = new Person() ; // 不转型
		per.print();
		System.out.println("--------- 外星怪兽狗骚扰地球,准备消灭人类 ----------");
		SuperMan man = (SuperMan) per ;  // SuperMan类与Person类
	}
}

Exception in thread "main" java.lang.ClassCastException: class Person cannot be cast to class SuperMan 

以后只要是发生对象的向下转型之前一定首先发生向上转型,两个没有任何关系的实例如果要发生强制转换,那么就会出现“ClassCastException”异常,所以向下转型不是一件安全的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值