JAVA向上转型、向下转型个人理解

      向上转型:父类引用指向子类对象;

      向下转型:父类引用指向子类的对象再转回为子类对象;

     如果有 Cat 类 集成 Animal类,

向上转型:猫 继承了动物,所以猫可以转为动物 ,即 Animal a= new Cat();

向下转型:如果 a 想变成Cat,既要向下转型 Cat c=(Cat) a;

那么看下这个例子:

有一个类,Animal类:

package test;

public class Animal {
	public void  say() {}

}

此时,有另一个类继承了Animal

package test;

public class Human extends Animal{

	@Override
	public void say() {
		System.out.println("我是人类");
	}
	

}

然后 Man继承Human

package test;

public class Man extends Human{

	@Override
	public void say() {
		System.out.println("我是男人");
	}
	
	public void ags() {
		System.out.println("今年25");
	}
	

}

如果有

Animal a=new Man();
		a.say();
		
Man m=(Man)a;
m.say();
m.ags();

相信大家都知道结果,那么如果    

	Human h=(Human)a;
		h.say();

结果会是什么了?通过打印发现,结果如下

这种可能有同学会说这不是向下转型吗,不,这也是向上转型,只不过先向下转,在向上转,即

Man m=(Man) a;

然后再:

Human h=Man m;

可以这样立即,一个男人是动物类,即Animal a=new Man();

那么他也可以是人类,即 Human h= a,但是中间发生了向下转型,所以是Human h=(Man) a; 


        

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值