A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 客剑 于 2014-6-28 00:03 编辑
  1. interface A
  2. {
  3. }
  4. class B implements A
  5. {
  6.         public String func()
  7.         {
  8.                 return "func";
  9.         }
  10. }
  11. class Demo
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 A a=new B();     //这句执行时到底怎么工作的,若是a对象中没有func()函数
  16.                 //B b=(B)a;//强转回B类对象,对象中怎么就有了,(这句加到程序中,打印b.function()就可以运行了)
  17.                 System.out.println(a.func());
  18.         }
  19. }
复制代码
这是毕老师视频中的题,我就以它为例子好了,一直没搞明白,这几句在JAVA中具体怎么工作的?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

3 个回复

倒序浏览
给你两个链接  说的挺细的

http://www.doc88.com/p-200931471839.html

http://wenku.baidu.com/view/7c46a0d149649b6648d747c1.html

点评

非常感谢,终于弄清楚了,看来哥们学得很扎实啊,赞一个  发表于 2014-6-28 13:47

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
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());
        }
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马