在一个类中定义的另一个完整的类
直接定义在一个类中
使用格式:
1.创建外部类对象
2.通过外部类对象的new方法创建除内部类对象
3.通过内部类对象调用其方法或者属性
//外部类 public class Outer{ //成员内部类,直接定义在一个外部类中 public class Within{ public void printW(){ System.out.println("这是一个内部类") } } } //测试 public class Test{ public static void main(String[] args){ //1.创建外部类对象 Outer outer=new Outer(); //2.通过外部类对象,创建内部类对象,直接创建内部类对象会报错 Outer.Within within=outer.new Within(); //3.通过创建出来的内部类对象,可以调用内部类中的属性和方法 within.printW; } }
定义在方法之中
使用格式:
1.在方法中创建一个类(构造方法中也可以)
2.局部内部类只能在该方法中使用,方法结束自动销毁释放内存
3.在方法中可以直接new出对象
//外部类 public class Outer{ //方法 public void demo(){ /*局部内部类,定义在方法中。成员内部类不用访问修饰符,因为和局部属性一样,作用域 只有在方法中,方法结束自动销毁*/ class Within{ private String name; public void setName(String name){ this.name=name; } public String getName(){ return this.name; } } Within within=new Within();//成员内部类实例化,只能在方法中,方法结束自动销毁释放内存 } }
定义在类之中,和成员内部类的区别在于成员内部类需要先创建出外部类对象,静态内部类可以直接通过类名创建出静态内部类对象
//外部类 public class Outer{ //静态内部类 public static class Within{ public void printW(){ System.out.println("这是静态内部类中普通方法"); } public void printO(){ System.out.println("这是静态内部类中静态方法"); } } } public class Demo1{ public static void main(String[] args){ /*直接通过类名创建出静态内部类,不用像成员内部类一样先创建出外部类对象,然后再通过外部类对象创建出内部类*/ Outer.Within within=new Outer.Within(): within.printW();//调用静态内部类中方法 Outer.Within.printO;//直接通过类名调用静态内部类中的静态方法 } }