黑马程序员技术交流社区

标题: 关于接口的一个问题 [打印本页]

作者: zippo    时间: 2014-7-27 22:52
标题: 关于接口的一个问题
本帖最后由 zippo 于 2014-8-2 22:42 编辑
  1. interface A{}
  2. class B implements A
  3. {
  4.         public String test()
  5.         {
  6.                 return "yes";
  7.         }
  8. }
  9. class Demo
  10. {
  11.         static A get()//这句不理解?
  12.         {
  13.                 return new B();//B是哪来的?
  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                 A a=get();//这句不理解?是在new对象吗?
  18.                 System.out.println(a.test());
  19.         }
  20. }
复制代码
整个程序是编译失败的,因为a.test(); A接口中没有该定义test();

但是,上面这两句不理解!请大神们,讲解一下这是怎么个事?

作者: 王乐乐    时间: 2014-7-27 23:05
interface A{
        public abstract String test();
}
class B implements A
{
                public String test()
                {
                                return "yes";
                }
}
class Demo
{
                static A get()//这句不理解?
                {
                                return new B();//B是哪来的?
                }
                public static void main(String[] args)
                {
                                A a=get();//这句不理解?是在new对象吗?
                                System.out.println(a.test());
                }
}
作者: 王乐乐    时间: 2014-7-27 23:06
在接口中定义一个test()抽象方法就可以了。
作者: 奋上    时间: 2014-7-27 23:07
本帖最后由 奋上 于 2014-7-27 23:10 编辑

发错了,呵呵,这道题我也不是怎么理解  return new B();是返回一个B类的实例化对象是吗?
作者: 王乐乐    时间: 2014-7-27 23:14
引用类型为A,实例是B,相当于A a = new B();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2