- 如果不需要内部类与其外围类对象之间有联系,可以将内部类声明为static。通常称为嵌套类。
- 普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。
- 嵌套类意味着:①要创建嵌套类的对象,并不需要其外围类的对象。②不能从嵌套类的对象中访问非静态的外围类对象。
- 嵌套类和外围类还有一个区别:普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类,但是嵌套类可以包含所有这些东西。
/** * Created by Panda on 2018/6/10. */
public class Parcel11 {
private static class ParcelContents implements Contents{
private int i=11;
@Override
public int value() {
return i;
}
}
protected static class ParcelDestination implements Destination{
private String label;
private ParcelDestination(String whereTo){
label=whereTo;
}
@Override
public String readLabel() {
return label;
}
public static void f(){}
static int x=10;
static class AnotherLevel{
public static void f(){}
static int x=10;
}
}
public static Destination destination(String s){
return new ParcelDestination(s);
}
public static Contents contents(){
return new ParcelContents();
}
public static void main(String[] args) {
Contents contents=contents();
Destination destination=destination("milk");
}
}
接口内部的类
- 很多情况下,不能在接口内部放置任何代码,但是嵌套类可以作为接口的一部分。接口中的任何类都自动地是public和static的。因为类是static,只是将嵌套类置于接口的命名空间内,并不违反接口的规则。甚至可以在内部类中实现其外围接口。
如果想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,就使用接口内部的嵌套类会显得很方便。
从多层嵌套类中访问外部类的成员