黑马程序员技术交流社区

标题: 接口类问题 [打印本页]

作者: tpsu88    时间: 2013-6-23 14:01
标题: 接口类问题
本帖最后由 孙百鑫 于 2013-6-27 07:16 编辑
  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();

但是,上面这两句不理解!请大神们,讲解一下这是怎么个事?
作者: 王靖远    时间: 2013-6-23 14:16
接口不能实例。
作者: 280270738    时间: 2013-6-23 15:47
static A get()//这句不理解?这句话就是创建一个静态方法啊,该静态方法用来创建一个B的对象实例。
A a=get();//这句不理解?是在new对象吗?get()方法返回了一个B类的对象,该对象的引用类型是A. 楼上的同学说的很对接口是不能创建对象的。但是这句话里并没用用接口去创建对象,只是作为引用类型而已。
System.out.println(a.test());这句话才是代码的错误之处,因为A类中没有test()方法,所以编译会报错。要解决这个问题就必须在A中定义一个抽象的test方法。
我把正确代码给你发上来,希望你能理解。大家相互学习。这样才有进步。

  1. interface A{
  2.         public String test();
  3. }
  4. class B implements A
  5. {
  6.         public String test()
  7.         {
  8.                 return "yes";
  9.         }
  10. }
  11. class aaa
  12. {
  13.         static A get()//这句不理解?
  14.         {
  15.                 return new B();//B是哪来的?
  16.         }
  17.         public static void main(String[] args)
  18.         {
  19.                 A a=get();//这句不理解?是在new对象吗?
  20.                 System.out.println(a.test());
  21.         }
  22. }
复制代码

作者: tpsu88    时间: 2013-6-23 16:34
标题: RE: 接口类问题
280270738 发表于 2013-6-23 15:47
static A get()//这句不理解?这句话就是创建一个静态方法啊,该静态方法用来创建一个B的对象实例。
A a= ...

很详细!谢谢!!
作者: 孙百鑫    时间: 2013-6-27 07:15
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e100:}
作者: tpsu88    时间: 2013-6-27 09:04
孙百鑫 发表于 2013-6-27 07:15
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e ...

好的!!辛苦版主了!!




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