xf7633 2012-02-29 00:09
浏览 179
已采纳

内部类

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);
  }
  }

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

  • 写回答

2条回答 默认 最新

  • qiemengdao 2012-02-29 09:26
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?