内部类

内部类
“为了访问一个类的所有成员和方法”
一、         什么是内部类
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.javaParcel10.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的标准命名机制,所以产生的文件会自动具备“与平台无关”的能力。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值