嵌套类实际上就是类中类的意思,可以看作外部类的一个成员,分为非静态内部类,静态内部类,匿名内部类,局部类
下面一个例子展示了除局部类的三种类的使用方法
public class ClassTest{
static String valout="aaaa";
class Inner1{
public int a=1;
public void method1(){
System.out.println("this is inner method");
}
}
class Inner2{
public String valin="bbSbb";
public void printValout(){
System.out.print("vaout:"+valout);
}
}
static class Inner3{
public static String valin="bbSbb";
public static void printValout(){
System.out.print("vaout:"+valout);
}
}
public static void main(String[]args){
ClassTest ct=new ClassTest();
//调用内部类Inner1
Inner1 In1=ct.newInner1();
In1.method1();
//使用匿名内部类的方法调用Inner2的printValout方法
Inner2 in2=ct.newInner2(){
@Override
public void printValout(){
System.out.println("nimingneibuleifangfa");
}
};
in2.printValout();
//直接调用静态内部类Inner3里的printValout方法
Inner3.printValout();
}
}
1.非静态内部类的调用需要先实例化外部类,才能使用外部类的对象去实例化内部类,从而调用内部类的方法
2.静态内部类,只要内部类被修饰为静态,则该内部类的级别就被升级为顶级,能够使用类名.成员这种方式访问成员方法或变量,可以看成是一个外部类了,因为可以直接通过new实例化对应的对象
3.匿名内部类可以是看成对接口或者类的实现和继承,使用匿名内部类实现接口或者继承类会立即创建一个对象,但该对象无法复用,这种对象是一次性的。
4.内部类可以无条件访问外部类的成员变量或方法,包括私有的。