可以将一个类定义在另一个类的内部,这就是内部类.内部类是一种非常有用的特性,因为允许你把一些逻辑相关的类组织在一些,并控制内部类的可见性.
public class Parcel1 {
class Contents{
private int i = 11;
public int value(){ return i;}
}
class Destination{
private String label;
Destination(String whereTo){
label = whereTo;
}
String readlabel(){ return label; }
}
public Destination to(String s){
return new Destination(s);
}
public Contents cont(){
return new Contents();
}
public void ship(String dest){
Contents c = cont();
Destination d = to(dest);
System.out.println(d.readlabel());
}
public static void main(String args[]){
// Contents c = new Contents();不能编译
Parcel1 p = new Parcel1();
Parcel1.Destination d =p.to("ddddd");
System.out.println(d.readlabel());
}
}
不能在静态方法内直接象其他类一样使用,(必须用OutClassName.InnerClassName格式 ,,,jdk6 好像不用?高人指明)
TIJ:不能在外部类的非静态方法之外的任意位置创建某个内部类的对象.具体指明对象类型
可以用方法返回的方式创建内部类的对象.
还可以用Destination d2 = p.new Destination("aa");创建内部类对象
要创建内部类必须创建外部类对象
在非static内部类中,通过特殊的this引用可以链接到外部类.
内部类对象有一个创建它的外部类对象的引用(通过特殊的this).因此内部类对象可以访问外部类的方法和字段,就像自己拥有一样.
当内部类是static时 ,就不会有对外部类的引用.这通常成为嵌套类,嵌套类没有这个特殊的this,嵌套类类似一个static方法
2..在方法和作用域内的内部类
方法内的类,在方法外不能访问.
作用域外 也不能访问定义在作用域内部的类.