上溯造型、下溯造型的理解

(上溯造型定义:java允许把一个子类对象直接复制给一个父类引用变量,自动完成类型转换,这种语法现象称为上溯造型。

下溯造型回到它自己所在的类(强制转换):一个对象被溯型为父类或接口后还可以再被下溯造型,回到它自己所在的类。注意,只有曾经上溯造型过的对象才能进行下溯造型,对象不允许不经过上溯造型我直接下溯造型,否则运行时会抛出

上溯造型的优点是用户可以把不同类型的子类上溯为同一个父类造型,以方便地统一处理它们;缺点是损失掉了子类新扩展增加的属性和方法(覆盖父类的方法不会损失掉),除非再进行下溯造型,否则这部分属性和方法不能被访问)以上文字引用博客

以下以“黄”sir勾勾为例

//step1:新建一个animal类
class animal{
	void shout() {
		System.out.println("wangwangwang");//建一个动物叫的方法
	}
	/*下面建一个static方法,过程是以animal对象为参数,实现该方法。
	 我认为这里这样写的作用是使得在已经建立子类的对象
	(比如下面的dog) 后不用再新建animal类即可直接通过animal.test()
	 调用shout方法,因为shout方法不是静态方法不能直接通过名字调用
	 而是需要实例animal。
	 */
	static void test(animal i) {
		i.shout();
	}
}
class dog extends animal{
	void sleep() {
		System.out.println("zzz");
	}
}
class Test{
	public static void main(String[] args) {
		animal huang=new dog();//把dog huang上溯造型,也就是把huang变成animal对象
		animal.test(huang);
		//huang.sleep();这时候不能运行,因为上溯造型后huang损失了新建的sleep方法,只有父类方法		
		dog huan=(dog)huang;//下溯造型,耶嘿,也就是把huang变回dog类对象
		huan.sleep();//好了,这时候可以zzz了。
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹邹邹邹!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值