黑马程序员技术交流社区
标题:
交流 转型
[打印本页]
作者:
包晗
时间:
2012-6-4 12:24
标题:
交流 转型
本帖最后由 包晗 于 2012-6-4 14:26 编辑
abstract class Animal
{
abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
lass DuoTaiDemo2
{
public static void main(String[] args)
{
Animal a = new Cat();
a.eat();
Cat c = (Cat)a;
c.catchMouse();
}
}
Animal a = new Cat(); 我的理解是 在内存中建立名为cat的对象 只执行Animal的相同功能 其他功能不执行
这句Cat c = (Cat)a; 知道是向下转型 但这里理解的不透彻 求教这句在内存中的运行 谢谢
作者:
唐辉辉
时间:
2012-6-4 12:40
首先楼主的代码有点问题:
Animal a = new Animal(); Animal是接口,接口是不能被实例化的。
所谓向下转型就是将将超类的引用强制转换为子类类型。
作者:
郭宁
时间:
2012-6-4 12:52
LZ感觉 abstract 的Animal 可以实例化么?
作者:
陆建平
时间:
2012-6-4 13:25
Animal a = new Cat(),父类的引用指向了子类的对象 a可以作为animal的引用,也可以将a转换成cat,故Cat c = (Cat)a
作者:
包晗
时间:
2012-6-4 14:27
唐辉辉 发表于 2012-6-4 12:40
首先楼主的代码有点问题:
Animal a = new Animal(); Animal是接口,接口是不能被实例化的。
代码写错了...重新改了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2