Think in java学习笔记-第8章 Inner Classes
来源:互联网 发布:淘宝充话费开店 编辑:程序博客网 时间:2024/04/24 07:09
内部类
“为了访问一个类的所有成员和方法”
一、 什么是内部类
1、 在Java 1.1中,可将一个类的定义置入另一个类的定义中,这种处于内部的类就叫作“内部类”。
2、 内部类创建方法
例:Parcel1.java
3、 和外部类不同,Inner class可以声明为private或protected;
二、 方法内部类和作用域内部类
1、 方法内部类:对象在方法外仍然可以使用。方法内部类可以自由使用方法的自变量。
例:Parcel4.java
2、 作用域内部类:在定义它的那个作用域之外,它是不可使用的
例:Parcel4.java
三、 匿名内部类(常用)
1、 什么是匿名内部类?没有名字的内部类。
例:Parcel6.java
2、 匿名类不能拥有一个构造方法
例:Parcel7.java
3、 若试图定义一个匿名内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象为final属性。
例:Parcel8.java
4、 一个实例初始化模块就是一个匿名内部类的构造方法
例:Parcel9.java
四、 非static内部类(相当与非static的成员)
1、 非static内部类的对象持有创建它的外部类的一个对象的引用。(本质)
2、 想在除外部类非static方法内部之外的任何地方生成非static内部类的一个对象,必须将那个对象的类型设为“外部类名.内部类名”。
例:Parcel2.java ,
3、 创建非static内部类的对象时,需要外部类的对象。即:除非已拥有外部类的一个对象,否则不可能创建非static内部类的一个对象
例:Parcel11.java
4、 非static成员内部类可以自由使用外部类的任何成员变量和成员方法。(常用)
例:Sequence.java
5、 非static内部类不可拥有static数据或static内部类。
五、 static内部类(相当与static的成员)
1、 static内部类的对象没有创建它的外部类的一个对象的引用。(本质)
2、 创建static内部类的对象时,不再需要外部类的对象。
例:比较Parcel3.java和Parcel10.java
3、 static成员内部类只能使用外部类的static成员变量和成员方法。
4、 static内部类可以成为接口的一部分。
例:IInterface.java
5、 static内部类的一个用途
例:TestBed.java
6、
六、 内部类和继承
Inner class可以声明为抽象类 ,因此可以被其它的内部类继承。也可以声明为final的。
1、 继承内部类
例:InheritInner.java
结论:
1) 注意子类构造方法的定义
2) 子类没有默认的构造方法。
3) 子类的构造方法的自变量必须有父类的外部类。
4) 子类的构造方法中必须明确的调用父类的构造方法: 父类外部类名.super();
2、 继承外部类时内部类不可以被覆盖
例:BigEgg.java
结论:
一个内部类不能被覆盖――继承一个外部类时,它的内部类不会继续,即内部类不属于子类。
例:BigEgg2.java
结论:子类的内部类可以继承父类的内部类。
七、 内部类标识符
1、 成员内部类的标识符:外部类的名字+$+内部类的名字.class
2、 方法和作用域中的内部类的标识符:外部类的名字+$+数字序号+内部类的名字.class
3、 匿名内部类的标识符:外部类的名字+$+数字序号.class
4、 内部类嵌套于其他内部类: 外部类的名字+$+内部类1的名字+$+内部类2的名字.class
由于它是Java的标准命名机制,所以产生的文件会自动具备“与平台无关”的能力。
- Think in java学习笔记-第8章 Inner Classes
- Think In Java 笔记6 Inner Classes
- Think in java学习笔记-第8章 Interfaces
- JAVA 复习(Think In Java, 4th) -- Inner Classes - Part1
- JAVA 复习(Think In Java, 4th) -- Inner Classes - Part2
- Think In Java 笔记3 Reusing Classes
- Think in java学习笔记-第6章 Composition
- Think in java学习笔记-第6章 Inheritance
- Think in java学习笔记-第7章 Polymorphism
- Think in java学习笔记-第9章 Exceptions
- think in java&Inner Class
- think in java 学习笔记
- [think in java] 第8章 多态
- Think in java学习笔记-第5章 隐藏实施过程
- Think in java学习笔记-第4章 初始化和清除
- Think in java学习笔记-第3章 控制程序流程1
- Think in java 笔记一(第1~2章)
- Think in java 笔记二(第3~4章)
- Think in java学习笔记-第4章 初始化和清除
- DIV_圆边圆角的实现
- Think in java学习笔记-第3章 控制程序流程1
- 跳动的下拉菜单
- 客户端静态页面玩分页
- Think in java学习笔记-第8章 Inner Classes
- 漂亮的表格
- Think in java学习笔记-第8章 Interfaces
- 经典的带阴影的可拖动的浮动层
- 如何将 Office 应用程序配置为在交互式用户帐户下运行
- Think in java学习笔记-第9章 Exceptions
- 测试用例之性能测试用例
- 性能测试兵法
- Linux学习摘要(freshbird)