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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 神奇小魔王 中级黑马   /  2014-4-2 23:06  /  1358 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近学习内部类和匿名内部类感觉很困惑,不知道该如何去理解,如何去使用,在实际项目中会在什么情况下使用到呢?学哥学姐们,请帮助下,谢谢!

6 个回复

倒序浏览
内部类有如下特征:
内部类被编译成名为OuterClassName$InnerClassName.class的类。
内部类可以引用定义在它嵌套的外部类中的数据和方法,所以不需要将外部类对象的引用传递给内部类的构造方法,因此,内部类可以拿程序简单和简洁。
声明用可见性修饰符声明内部类,遵从应用于一般类成员的可见性规则。
可以将内部类声明为static。一个static内部类可以使用外部类的名字访问。一个static类是不能访问外部类的非静态成员的。
内部类的对象经常在外部类中创建。但是也可以从另一个类中创建一个内部类的对象。如果该内部是非静态的,就必须先创建一个外部类的实例,然后用下面的语法创建一个内部类的对象:
Java代码
OuterClass.InnerClass innerObject = OutObject.new Innerclass()  
.如果内部类是静态的,那么使用下面的语法为它创建一个对象:
Java代码
OuterClass.InnerClass innerObject = new OutObject.Innerclass()   
匿名内部类是一种特殊的内部类,所以有很多方面都应把它当作内部类对待。除此之外,它还不以下特征。
匿名内部类必须是扩展父类或实现接口的。但是它不能有明确的extends或implements语句。
匿名内部类必须实现父类或接口中所有的抽象方法。
匿名内部类总是使用父类的无参数构造方法来创建实例。如果匿名内部类实现了接口,构造方法就是Object().
匿名内部类编译为名为OuterClassName$n.class的类。如,如果外部类Test有两个匿名类,那么它们就编译成Test$1.class和Test$2.class。

评分

参与人数 1黑马币 +2 收起 理由
神奇小魔王 + 2 很给力!

查看全部评分

回复 使用道具 举报 1 0
匿名内部类 是内部类的一种简写形式 ,没有类名而已,一般用在,你所要使用的类只在这里出现一次,或你要马上使用一个类,就可以直接,使用匿名类。
回复 使用道具 举报
本帖最后由 1453149997 于 2014-4-3 09:06 编辑

(1)内部类是一个类,如果它处于成员的位置,我们可以把它理解成一个类的成员,就像成员方法一样,
我们可以叫他“成员类”(这个概念是我自己造的);使用你可以借助如何使用成员方法来理解如何使用
内部类;内部类也可以位于方法内部,具体细节就不在介绍了,毕竟这个概念太复杂;
      当需要把类的内部的某个东西定义为一个类的时候就使用内部类,比如在Collection体系的集合中,所
有的集合都有一个迭代器,这个迭代器就是一个内部类;

(2)匿名内部类就是位于类的内部,但是只被使用一次,不需要定义一个变量指向它的类;
     

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
感觉帖子说的不错,希望有机会和你一起学习
回复 使用道具 举报
给你个文档,自己研究吧!不懂的再问我吧!
回复 使用道具 举报
file:///C:\Users\���\AppData\Local\Temp\SGTpbq\5808\01973931.gif⊙﹏⊙b汗!doc文件不让传,给你压缩了!

Java 内部类.zip

6.8 KB, 下载次数: 52

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