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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈迎春 中级黑马   /  2013-4-11 13:31  /  2178 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈迎春 于 2013-4-13 11:16 编辑

问题:
1,什么叫实例化?是指new 出一个对象的引用,这个引用就叫实例化的对象吗?
2,抽象类,接口能被实例化吗?原因是什么?
3,这里的OuterInterface是不是被实例化了呢?
代码如下:
  1. //定义一个接口
  2. interface OuterInterface
  3. {
  4. }
  5. public class OuterClass
  6. {
  7.         public OuterInterface doit()
  8.         {

  9.                 return new OuterInterface(){//这里的OuterInterface是不是被实例化了呢?
  10.                         private int i = 0;
  11.                         public int getValue()
  12.                         {
  13.                                 return i;
  14.                         }
  15.                 };
  16.         }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
匿名类是一种特殊的局部内部类
可以从类继承匿名类,还可以从抽象类,接口继承(实现)匿名类
匿名类是对原类的一个继承,同时创建了实例,{} 就是继承
以后的类体。类体中可使用所有类的语法。
所以说你那其实已经实现接口了!
如果结果不被实现是不能被是实例化!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赵晓东 于 2013-4-11 18:48 编辑

问题:
1,什么叫实例化?是指new 出一个对象的引用,这个引用就叫实例化的对象吗?
      恩,对,实例化是面向对象的重点。你自己写的类好比图纸,实例化就是通过图纸制造出来的实体,具备图纸上所有的功能。new就是实例化的动作,引用就是实例化的实体。
2,抽象类,接口能被实例化吗?原因是什么?
     抽象类和接口不能被实例化,因为它们没有构造函数,没有构造函数就不能被实例化,它们的主要作用就是定义功能让其子类去实现这些功能。
3,这里的OuterInterface是不是被实例化了呢?
    OuterInterface是被实例化了,OuterInterface是一个接口,其实new OuterInterface是实现了接口OuterInterface并实现了其接口中定义的功能

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
赵晓东 发表于 2013-4-11 18:40
问题:
1,什么叫实例化?是指new 出一个对象的引用,这个引用就叫实例化的对象吗?
      恩,对,实例化 ...

谢谢你的回答。
我还有点疑问,在第二个问题里,你说接口不可以被实例化的,但为什么第三个问中你又说OuterInterface接口是被实例化了呢?这两者的区别在哪呢?
回复 使用道具 举报
陈迎春 发表于 2013-4-11 21:25
谢谢你的回答。
我还有点疑问,在第二个问题里,你说接口不可以被实例化的,但为什么第三个问中你又说Out ...

也许是我没说明白吧,接口是不能被实例化的,要知道匿名内部类是没有名字的,而你又要实现OuterInterface接口,所以一般格式就是这样写:new OuterInterface(){执行语句}; 这样就创建了一个实现OuterInterface接口的匿名(没有名字的)内部类。在{}里面是你实现接口的方法。
回复 使用道具 举报
第一问的回答
如:
class A {
  int i;
}
这里A就是一个类
而对象就是一个类的具体的某一个,如:
A a1 = new A();
A a2 = new A();
a1 a2都是对象

而创建对象的过程就叫实例化
因此有时候我们也将对象叫做一个类的实例。
关于第二问的答案是:抽象类(abstract class)和接口(interface)均不能被实例化,这是由其本身特点决定了的。
回复 使用道具 举报
huima 发表于 2013-4-11 21:53
第一问的回答
如:
class A {

谢谢指导、、、、
回复 使用道具 举报
赵晓东 发表于 2013-4-11 21:39
也许是我没说明白吧,接口是不能被实例化的,要知道匿名内部类是没有名字的,而你又要实现OuterInterface ...

谢谢!我懂了,其实OuterInterface并没有被实例化,而new OuterInterface(){执行语句};仅仅是创建了一个实现OuterInterface接口的类,只不过这个类是匿名的而已!
回复 使用道具 举报
huima 中级黑马 2013-4-13 11:20:25
9#
陈迎春 发表于 2013-4-13 11:13
谢谢指导、、、、

都是朋友,指导说不上哈,优势互补吧!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马