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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tpsu88 中级黑马   /  2013-6-23 14:01  /  1328 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 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();

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

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
接口不能实例。
回复 使用道具 举报
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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报

RE: 接口类问题

280270738 发表于 2013-6-23 15:47
static A get()//这句不理解?这句话就是创建一个静态方法啊,该静态方法用来创建一个B的对象实例。
A a= ...

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

好的!!辛苦版主了!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马