内部类

class Car
  {
  class Wheel
  {
  }
  }
  class PlaneWheel extends Car.Wheel
  {
  public static void main(String[] args)
  {
  PlaneWheel pw = new PlaneWheel();
  }
  }
  这是不能通过编译的,因为我们要产生pw,就必须先产生Car.Wheel的对象,而它是内部类,所以要产生它的对象,就必须先产生外部类的对象,才能建立起内部与外部的引用关系。
  因此作出改变:
以下是代码片段:
  class PlaneWheel extends Car.Wheel
  {
  PlaneWheel(Car car)
  {
  car.super();
  }
  public static void main(String[] args)
  {
  Car car = new Car();
  PlaneWheel pw = new PlaneWheel(car);
  }
  }

有哪位大虾能把下面的那段给解释下不???

成员内部类是需要依赖外部类的对象而存在的,第一种情况对于子类PlaneWheel,它的默认构造函数会去初始化super(即Car.Wheel),而初始化Car.Wheel时没有任何方式初始化Car(Wheel必须依赖Car对象的初始化才能被创建);

下面的方式传入了一个Car,使得Car.Wheel初始化时可以依赖传入的car(即car.super()),所以就成功了。

每个内部类都有个指向外部类的引用,所有要想调用内部类的方法,必须先获取这个引用,下面一段代码car就是这个引用,所以car.super()就代表调用父类的构造函数,并且这个父类是car的内部类。
不想有这种引用关系就把内部类改成static class,这样不需要先获取外部类就能直接操作内部类了,世界就清净了。