黑马程序员技术交流社区
标题:
关于多态中 转型的问题?
[打印本页]
作者:
Huberry
时间:
2014-8-13 21:34
标题:
关于多态中 转型的问题?
首先看一段代码,这段代码可以正常运行,但是后面改动一点就编译失败,求大神们解惑
复制代码
上面这段代码我把
Chinese c = (Chinese)p; //使p向下转型为Chinese类型
if(p instanceof Person) //此处有一个判
这两句顺序调换一下就编译失败了,提示是:
错误: 此处不允许使用变量声明
Chinese c = (Chinese)p;
^
为什么转型前加个判断语句就不能转了呢?
作者:
Huberry
时间:
2014-8-13 21:38
interface Person
{
void eat();
}
class Chinese implements Person
{
public void eat()
{
System.out.println("吃饭");
}
public void show()//Chinese类的特性方法
{
System.out.println("我是中国人");
}
}
class Show
{
public static void main(String[] args)
{
Person p = new Chinese();
p.eat();
Chinese c = (Chinese)p;//p向下转型
if(p instanceof Person)//此处有一个判断
c.show();
}
}
复制代码
额 ,上面代码没显示出来- -ll
作者:
Huberry
时间:
2014-8-14 01:33
木有人么~~{:3_50:}
作者:
cheye0207
时间:
2014-8-14 01:46
本帖最后由 cheye0207 于 2014-8-14 01:52 编辑
转换语句是在if语句里,也就是说c变量在if语句里创建的,在if语句外不能使用。。。用大括号把c.show()也括起来就好
作者:
masai158
时间:
2014-8-14 07:16
public static void main(String[] args)
{
Person p = new Chinese();
p.eat();
Chinese c =null;
if(p instanceof Person)//此处有一个判断
c = (Chinese)p;//p向下转型
c.show();
}
bu 知道你是不是这个意思
复制代码
作者:
嘿~~
时间:
2014-8-14 11:23
if(p instanceof Person)
下一步应该把p转成Person类型啊,跟chinese没关系啊,当然提示你不能声明变量了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2