继承内部类的构造器问题
来源:优易学  2011-10-5 9:51:46   【优易学:中国教育考试门户网】   资料下载   IT书店
  代码如下:
  class Car {
  class 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);
  }
  }
  调用的是 Car.Wheel 的构造器
  因为 你这个类,是集成自 Car.Wheel而不是 Car.
  同样,因为你不是单纯的集成子Wheel,所以你必须有一个Car的实例,因为Wheel属于Car。
  以下的几种情况都是错误的
  class Car {
  class Wheel {
  Wheel(int id) { // 不再有默认无参数构造器
  }
  }
  }
  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);
  }
  }
  不写调用
  class Car {
  class Wheel {
  }
  }
  class PlaneWheel extends Car.Wheel {
  PlaneWheel(Car car) { // 不写调用,也会出现编译错误
  }
  public static void main(String[] args) {
  Car car = new Car();
  PlaneWheel pw = new PlaneWheel(car);
  }
  }
  class Car {
  class Wheel {
  }
  }
  class PlaneWheel extends Car.Wheel {
  PlaneWheel(Car car) {
  super();// 单纯的super,同样是错误的
  }
  public static void main(String[] args) {
  Car car = new Car();
  PlaneWheel pw = new PlaneWheel(car);
  }
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训