黑马程序员技术交流社区
标题:
父类和子类的问题
[打印本页]
作者:
刘晓
时间:
2013-6-8 18:28
标题:
父类和子类的问题
本帖最后由 刘晓 于 2013-6-8 21:17 编辑
Animal a= new Cat( );
Cat c=(Cat) a;//强制将父类的引用转换为子类类型。
其中Cat是Animal的子类,我想问的是
a是不是Cat类的对象?
如果不是,那毕老师的视频里为何在没有强制转换父类引用的时候写
a.猫的方法
。
作者:
刘海芳
时间:
2013-6-8 18:50
本帖最后由 刘海芳 于 2013-6-8 18:51 编辑
无需强制,java的多态会使c向下转型为cat,即c就是cat的对象,可以用instanceof关键字来测试,
instanceof是用来判断某个对象是否属于某个类
public class Cat extends Animal{
public static void main(String[] args) {
Animal a=new Cat();
//instanceof是用来判断某个对象是否属于某个类
System.out.println(a instanceof Cat);
//output:true
}
}
复制代码
作者:
007诸葛亮
时间:
2013-6-8 18:50
创建对象时,a对象是 上转型对象,也就是说猫是动物成立,但说动物是猫不成立。当猫是动物上转型时,猫失去了自有的方法,但Animal方法是能调用的,这时候的a就是Animal ,当你运行时,会把a绑到Cat身上,叫运行时多态。希望对你的疑惑有帮助
作者:
王林涛
时间:
2013-6-8 20:59
先给说说这两句话什么意思:
Animal a= new Cat( ); // 类型提升,向上转型(Cat类型自动提升为了Animal型)
Cat c=(Cat) a; // 强制将父类引用转换成了子类类型,向下转型,这里的a是Animal类型,然后(Cat)a,转换为子类类型
所以就可以a.猫的方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2