A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZHAOWEI 中级黑马   /  2014-5-17 00:03  /  1038 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ZHAOWEI 于 2014-5-19 17:00 编辑

UltraMan u = (UltraMan)p;//Fu类 强转成 Zi类,搞不懂啊,不明白为什么类的强转是这样啊,理解不了,谁解答一下。

10 个回复

倒序浏览
苹果算是水果的子类,但是水果不一定是苹果。举个例子:你有一个苹果,你可以说它是一个水果,也可以说他是一个苹果,但当你要对这个苹果进行特别说明时,就不能还叫水果,因为可能其他水果并不具备它的特点,这时就必须叫它苹果,相当于强转。我是这样理解的吧
回复 使用道具 举报
本帖最后由 永远的小飞侠 于 2014-5-17 09:49 编辑

string str="123";str就可以强转为int

Father f=new Son();
Son s=Son(f);

强转的前提new的对象必须是强转的类型吧


回复 使用道具 举报
父类引用指向了自己的子类,也就是毕老师变成毕姥爷了,如果你还想看到毕老师,那就要把他强转回来。不强转回来你不就看不见毕老师了么!
回复 使用道具 举报
比如说动物和猫,动物是猫的父类这个懂吧,动物是一个泛指,可以说猫是动物,但是不能说动物就是猫,这就是多态,猫是猫,同时也是动物,
为什么要进行类型转换呢,因为动物是一个抽象的概念,每种动物都有其独特的特点,你可以说动物都要吃饭,睡觉,但是具体到某一种动物,他们的吃饭睡觉都是不同的,所以在具体的说某一种动物在干什么时,就不能说。你看那只动物在爬树,而是应该说那只猫在爬树,因为不是所有动物都会爬树,
至于为什么要这样转,这就是Java里定义的格式,照做就行了。。。
回复 使用道具 举报
建议回头把毕老师的视频再看看。  关于多态!!
回复 使用道具 举报
波涛 中级黑马 2014-5-17 12:21:53
7#
一同学习下!
回复 使用道具 举报
帽子 中级黑马 2014-5-17 13:04:53
8#
视频回头多看几遍,多态不好理解
回复 使用道具 举报
其实不必要太纠结,有些东西放一段时间回过头看就豁然开朗。
回复 使用道具 举报
这是多态里面的知识。首先来说强转的目的当然是为了使用子类特有的属性 或者方法。下面举个例子。
比如我要为person类重写equals方法。(equals是Object类的方法,任何一个类都会直接或者间接继承Object)
public boolean equals(Object b)
{
if(b instanceof person)
person p=(person)b;
return p.name.equals(this.name);
}

这里Object就是person的父类。我们的equals方法的参数类型是person的父类.既然我们是为person重写方法,那肯定要用到person的特有属性而不是父类就有的共有属性(如果只是用到父类的属性就不必要重写了)。因此我们只有拿到person这个类才能用到其特有的属性。所以就需要将Object转成person了。类的强转必须要有继承关系,否则强转失效。
回复 使用道具 举报
这个类似于数据的基本类型的强转似的,比如FLOAT转DOUBLE型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马