免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 987 | 回复: 0
打印 上一主题 下一主题

内部类学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-29 20:18 |只看该作者 |倒序浏览

内部类学习笔记

1,内部类定义:在一个类的内部定义的类

2,内部类分类:

实例内部类

3,顶层类只能处于public和默认访问级别,而成员内部类可以处于pulbic、protected、    private和默认4种访问级别,且不论何种内部类都不能和外部类同名


4,实例内部类的特点:
在创建实例内部类的实例时,外部类的实例必须已经存在

实例内部类的实例自动持有外部类的实例的引用,在内部类中可以访问外部类的任何级别的所有成员     (成员变量、成员方法)

外部类实例与内部类实例之间是一对多关系,一个内部类实例只会引用一个外部类实例,而一个外部     类实例对应零或多个内部类实例,在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问

在实例内部类中不能定义静态成员(静态变量、静态方法、静态内部类等),只能定义实例成员

如果内部类和外部类都包含相同的成员,比说说成员变量i,那么this.i表示内部类 的成员变量i,外 部类.this.i表示外部类的成员变量i

5,静态内部类的特点:
    用static修饰的成员内部类

    静态内部类的实例不会自动持有外部类的特地实例的引用,在创建内部类的实例时,不 必创建外部      类的实例

    静态内部类可以直接访问外部类的静态成员(静态变量、静态方法、静态内部类等),如果访问外部类       的实例成员,则必须通过外部类的实例去访问
    在静态内部类中可以定义静态成员和实例成员,而实例内部类只能定义实例成员

    客户类何以通过完整的类名直接访问静态内部类的静态成员

6,局部内部类的特点:
    在一个方法中定义的内部类,可以范围在当前方法,和局部变量一样,局部内部类不能用访问控制修饰符    (public、private和protected)及static来修饰

    局部内部类只能在当前方法中使用

    局部内部类和实例内部类一样,不能包含static成员

    在局部内部类中定义的内部类不能被public、protected、private这些访问控制修饰符修饰

    局部内部类和实例内部类一样,可以访问外部类的所有成员(变量,方法等),还可以访问所在方法中       的final类型的参数和变量

7,内部类中不存在覆盖的概念,如果子类和父类中存在同名的内部类,这两个内部类分别处于     不同的命名空间中,因此不会发生冲突

8,匿名类的特点:
    是一种特殊的内部类,这种类没有名字

    匿名类没有构造方法,但是会调用父类的构造方法

    你们类尽管没有构造方法,但可以在匿名类中提供一段实例初始化代码,JVM会在调用 了父类的构      造方法后,执行这段代码,实例初始化代码具有和构造方法同样的效果

    除了可以在外部类的方法内定义匿名类以外,还可以声明一个成员变量时定义匿名类

    匿名类除了可以继承类以外,还可以实现接口

    匿名类和局部内部类一样,可以访问外部类的所有成员,如果匿名类位于一个方法中,还可以访问所         在方法的final类别的变量和参数

    匿名内部类的名字在方法外是不可见的,因此与匿名类一样,可以起到封装类型名字的 作用

9,内部类的用途:
    封装类型

    直接访问外部类的成员

    回调(CallBack)外部类的方法

10,内部类的类文件:
    成员内部类:外部类的名字 + $ + 内部类的名字

    局部内部类:外部类的名字 + $ + 数字 + 内部类的名字

    匿名类:     外部类的名字 + $ + 数字

11,内部类总结:

比较方面
实例内部类
静态内部类
局部内部类
主要特征
内部类的实例
引用特地的外部类实例
内部类的实例不与
外部类的任何实例关联

可见范围
为所在方法
可用修饰符
所有访问控制修饰符,
abstract,final
所有访问控制修饰符,
static,abstract,final


abstract,final


可以访问外部类的哪些成员
直接访问外部类
的所有成员
只能直接访问
外部类的静态成员
直接访问外部类
的所有成员,并且能访问所在方法的final类型的变量和参数
拥有成员的类型
只能拥有实例成员
实例成员,静态成员
只能拥有实例成员
外部类如何
访问内部类
必须通过
内部类的实例来访问
静态成员可以通过
内部类的完整类名来访问
必须通过
内部类的实例来访问




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63095/showart_511504.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP