内部类
-
成员内部类
创建方式 public class 外部类名 { private String name; public class 内部类名{ } } 访问方式 外部对象 外部对象名 = new 外部类名(); 外部对象.内部对象 内部对象名 =外部对象名.new 内部类名(); Demo demo = new Demo(); Demo.InnerClass innerClass = demo.new InnerClass(); innerClass.doWork();
public class Demo { private String name; //成员内部类 public class InnerClass{ public void doWork(){ System.out.println("内部类里面的方法"); } } public void play(){ //局部内部类 class Game{ public void doGame(){ System.out.println("play game "); } } Game game = new Game(); game.doGame(); } } public class Test { public static void main(String[] args) { Demo demo = new Demo(); Demo.InnerClass innerClass = demo.new InnerClass(); innerClass.doWork(); demo.play(); } }
-
匿名内部类
public interface Usb { void drive(); } public class UsbTest { public static void main(String[] args) { Usb usb = new Usb() { @Override public void drive() { } }; } }
匿名对象
-
定义格式
创建对象是不接收 new Student().eat();
-
意义
- 方便GC的垃圾回收,节约内存开销(优点)
- 创建对象过于频繁(缺点)