一个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的方法确实可行,能否告诉我为什么? 展开
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的方法确实可行,能否告诉我为什么? 展开
3个回答
展开全部
将
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”的错误。是语法错误,不是强制转换的问题。
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”的错误。是语法错误,不是强制转换的问题。
展开全部
不知道你要写些什么,反正没有看明白。
是不是这样的
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 {}
是不是这样的
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 {}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (a instanceof Cat) Cat c=(Cat)a;
这样试试,别换行
这样试试,别换行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询