本帖最后由 张云杰 于 2013-1-14 18:18 编辑
赵文 发表于 2013-1-14 17:34
完全可以向下转型,用 intanceof 关键字实现
此题我画个图...
首先 你这定义的就有问题,
01.class Anamil{
02. public abstract void eat();
03. }
你这符合标准么? 实体类中怎么有抽象方法? 首先你的错误就是, 这个类 必须是抽象类 抽象类才能有抽象方法.. 否则就是接口
这个是概念问题.. 目测你概念理解错了, intanceof 是干嘛用的? 它用在继承中的子类的实例是否为父类的实现,是判断用的..
1楼说的对...
至于报错也很简单, 不用画图, 这也是概念问题...
你的Animal是父类, 这里是指向父类的引用..
而子类.. 强转了父类的引用,, 这自然就报错 ..
如果想调的话, 那么 你可以Animal a = new Dog();
这样 把父类指向子类, 子类强转 就不会报错了 |