java有几种内部类,分别举一个例子,并且创建一个对象.

2025-01-21 15:44:19
推荐回答(1个)
回答1:

成员内部类
class Outer {

  class Inner{}

  }

  编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。

方法内部类
class Outer {

  public void doSomething(){

  class Inner{

  public void seeOuter(){

  }

  }

  }

  }

  (1)、方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。

  (2)、方法内部类对象不能使用该内部类所在方法的非final局部变量。

匿名内部类
A、继承式的匿名内部类

  public class Car {

  public void drive(){

  System.out.println("Driving a car!");

  }

  public static void main(String[] args) {

  Car car = new Car(){

  public void drive() {

  System.out.println("Driving anther car!");

  }

  };

  car.drive();

  }

  }

  结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。

  B、接口式的匿名内部类。

  interface Vehicle {

  public void drive();

  }

  class Test{

  public static void main(String[] args) {

  Vehicle v = new Vehicle(){

  public void drive(){

  System.out.println("Driving a car!");

  }

  };

  v.drive();

  }

  }
C、参数式的匿名内部类。

  class Bar{

  void doStuff(Foo f){}

  }

  interface Foo{

  void foo();

  }

  class Test{

  static void go(){

  Bar b = new Bar();

  b.doStuff(new Foo(){

  public void foo(){

  System.out.println("foofy");

  }

  });

  }

  }

静态嵌套类
class Outer{

  static class Inner{}

  }

  class Test {

  public static void main(String[] args){

  Outer.Inner n = new Outer.Inner();

  }

  }