黑马程序员技术交流社区
标题:
关于多态的疑问,子父类对象转换问题,望高手解惑
[打印本页]
作者:
客剑
时间:
2014-6-28 00:02
标题:
关于多态的疑问,子父类对象转换问题,望高手解惑
本帖最后由 客剑 于 2014-6-28 00:03 编辑
interface A
{
}
class B implements A
{
public String func()
{
return "func";
}
}
class Demo
{
public static void main(String[] args)
{
A a=new B(); //这句执行时到底怎么工作的,若是a对象中没有func()函数
//B b=(B)a;//强转回B类对象,对象中怎么就有了,(这句加到程序中,打印b.function()就可以运行了)
System.out.println(a.func());
}
}
复制代码
这是毕老师视频中的题,我就以它为例子好了,一直没搞明白,这几句在JAVA中具体怎么工作的?
作者:
杨庆雷
时间:
2014-6-28 01:52
给你两个链接 说的挺细的
http://www.doc88.com/p-200931471839.html
http://wenku.baidu.com/view/7c46a0d149649b6648d747c1.html
作者:
zhanqq2010
时间:
2014-6-28 14:16
interface A
{
}
class B implements A
{
public String func()
{
return "func";
}
}
class Demo
{
public static void main(String[] args)
{
A a=new B(); //创建B的一个实例对象,让a指向这个实例对象
//B b=(B)a; //因为A中没有func()这个方法(这个方法是在子类中定义的),他是访问不到func()方法的,只有将他强制转化为B,才可 以访问,除非你在A中定义public String func();这个方法,才才能动态连接到func()这个方法
System.out.println(a.func()); //这里应该有错,改为 System.out.println(((B)a).func());
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2