Java内部类讲解
可以将一个类A的定义放在另一个类B的内部,类A就是内部类;类B叫做外围类;
如下代码所示:
package com.javaInnerClass;
public class Parcel2 {
//内部类Contents
class Contents{
private int i = 11;
public int value(){
return i;
}
}
//内部类Destination
class Destination{
private String label = "label";
Destination(String whereTo){
label = whereTo;
}
String readLabel(){
return label;
}
public Destination(){}
}
//外围类中的方法可以返回内部类的对象
public Destination getDestination(){
return new Destination("label");
}
//外围类的方法可以返回内部类的对象
public Contents getContents(){
return new Contents();
}
//外围类的方法可以像访问其它类一样访问内部类,包括实例化内部类的对象,调用内部类的方法
public void ship(String dest){
Contents c = new Contents();
Destination d = new Destination(dest);
System.out.println(d.readLabel());
}
//在另一类中测试了通过外围类访问内部类
public static void main(String[] args){
Parcel2 p = new Parcel2();
p.ship("ShenZhen");
Parcel2 q = new Parcel2();
//程序外面访问外围类中的内部类的方法是"外围类.内部类"
Parcel2.Contents c = q.getContents();
System.out.println(c.value());
Parcel2.Destination d = q.getDestination();
System.out.println(d.readLabel());
}
}
综上所述,总结如下:
1>在外围类中可以访问内部类,包括实例化一个内部类对象,调用内部类对象的方法,就像访问其它类一样
2>在内部类中可以访问其所在外围类的所有方法和字段属性;参考本博客设计模式中的迭代器模式
3> 普通的内部类对象隐式的保存了一个外围类对象的引用,指向创建它的外围类对象。