一个java小程序,为什么运行不了?

publicclassTestRuntimeException{publicstaticvoidmain(String[]args){Animala=newDog();i... public class TestRuntimeException{
public static void main(String[] args){
Animal a=new Dog();
if (a instanceof Cat)
Cat c=(Cat)a;

}
}
class Animal {
public void eat(){}
}
class Cat extends Animal{}
class Dog extends Animal{}

这样运行会出错,改成{Cat c=(Cat)a;},加了大括号就不会出错,什么原因
换不换行都一样的,就是强转的问题,我不太明白
public class TestPoly{
public static void main(String[] args){
Animal a=new Dog();

if (a instanceof Dog){
Dog d=(Dog)a;
d.call(); }

class Animal{
public void eat(){
System.out.println("Animal Eat");
}
public void sleep(){
System.out.println("Animal sleeps 8 hours");
}
}
class Dog extends Animal{
public void sleep(){
System.out.println("Dog sleeps 6 hours");
}
public void call(){
System.out.println("WangWang");
}
}
这个怎么运行成功的? wolffery的方法确实可行,能否告诉我为什么?
展开
 我来答
倚笑搭房
2007-05-07 · TA获得超过178个赞
知道答主
回答量:25
采纳率:0%
帮助的人:14.8万
展开全部

if (a instanceof Cat)
Cat c=(Cat)a;
改为
Cat c;
if (a instanceof Cat)
c=(Cat)a;
就可以了。

其实你不用考虑那么多,在实际中不可能出现if (a instanceof Cat) Cat c=(Cat)a; 的情况。因为你这里定义的变量c在if外是用不到的,if中有没有处理,所以c没有意义。要让c有用就得把c的定义拿到if的外面;你如果想在if中处理变量c,那if中就得有其它语句,那样就得用{}括起来了。所以实际中不会出现你那样的错误。

if (a instanceof Cat) Cat c=(Cat)a; 的写法会报“not a statement”的错误。是语法错误,不是强制转换的问题。
百度网友ac7b053
2007-05-06 · TA获得超过340个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:152万
展开全部
不知道你要写些什么,反正没有看明白。

是不是这样的
public class TestAnimal{

public static void main(String[] args){

Animal a = new Dog();

Animal c ;

if (a instanceof Cat)
c = (Cat)a;
}
}

class Animal {

public void eat(){}
}
class Cat extends Animal {}
class Dog extends Animal {}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Evilsource
2007-05-06 · 超过20用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
if (a instanceof Cat) Cat c=(Cat)a;
这样试试,别换行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式