继承内部类的构造器问题

原创 2008年09月29日 04:21:00
代码如下:
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) {
  7.     car.super(); // 这句什么意思?为什么要这样写?
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }
调用的是 Car.Wheel 的构造器
因为 你这个类,是集成自 Car.Wheel而不是 Car.
同样,因为你不是单纯的集成子Wheel,所以你必须有一个Car的实例,因为Wheel属于Car。

以下的几种情况都是错误的
  1. class Car {
  2.   class Wheel {
  3.     Wheel(int id) { // 不再有默认无参数构造器
  4.     }
  5.   }
  6. }
  7. class PlaneWheel extends Car.Wheel {
  8.   PlaneWheel(Car car) {
  9.     car.super(); // 这里会出现编译错误
  10.   }
  11.   public static void main(String[] args) {
  12.     Car car = new Car();
  13.     PlaneWheel pw = new PlaneWheel(car);
  14.   }
  15. }
不写调用
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) { // 不写调用,也会出现编译错误
  7.    
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) {
  7.     super();// 单纯的super,同样是错误的
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }

版权声明:本文为博主原创文章,未经博主允许不得转载。

对于内部类中super()的疑惑和实验

继承外部类的内部类,当生成一个构造器时候,需要一个指向外部类对象的引用和调用外部类对象的super()方法, 然而super()一直以为是调用父类的构造函数,在本例中使用,居然是可以调用内部...
  • u011930705
  • u011930705
  • 2017年06月02日 12:23
  • 210

Java在继承中构造器的调用顺序

Java中子类继承父类时代码结构初始化以及调用的顺序:    子类声明一个对象时,     步骤1: 这时先调用的是基类的静态初始化块,然后是下一层的子类,一直到声明对象的类的静态初始化块。从这里...
  • wangjinyang_123
  • wangjinyang_123
  • 2015年06月08日 20:16
  • 1103

怎样继承一个内部类

定义一个内部类时,这个内部类会有一个隐式引用(implicit reference)指向外部类的实例。例如下面的代码: class WithInner { class Inner {} } ...
  • FeeLang
  • FeeLang
  • 2014年09月19日 21:06
  • 7155

子类继承父类,父类中的构造器

子类继承父类时,父类中必需有无参构造器,子类才可以继承父类? 可是父类中只有有参构造器时,就不能实现子类继承父类了吗?...
  • u014800380
  • u014800380
  • 2016年11月03日 12:06
  • 724

Java—内部类(三)—内部类的继承

内部类的继承内部类和其他普通类一样,同样可以被继承,这样给本来就十分灵活的内部类增加了更好的结构性和代码复用性。只是内部类的继承和普通类有一些不同之处,是在使用时需要多加注意的。因为内部类在创建时需要...
  • yuwenhao07
  • yuwenhao07
  • 2016年12月14日 14:23
  • 1869

如果构造器可以被继承····

今天看到一个面试题问构造器能不能被重写,回答说因为构造器不能被继承,所以答案是不能都被重写的。对然知道构造器是不能被继承的,但一时还真想不到是为什么,索性上网查了下,看到了下面的回答 ...
  • ccecwg
  • ccecwg
  • 2015年01月13日 17:43
  • 488

理解 Java 构造函数不可以继承

在读Java的文档的时候  http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html 这里有一句是讲,Constructors...
  • yuxiaohui78
  • yuxiaohui78
  • 2015年02月20日 02:38
  • 4195

当用protected访问修饰符修饰内部类时会怎样?

// in SuperClass.javapackage com.duwei.SuperClass;        class SuperClass {        protected class ...
  • clarkdu
  • clarkdu
  • 2005年04月02日 03:22
  • 1336

内部类——内部类的继承

一、内部类继承内部类 因为父类和子类都是内部类,所以父内部类和子内部类会有静态与非静态之分,无论父内部类是静态的还是非静态的,其子内部类既可以是静态的也可以是非静态的。 如果父类是非静态的,则必须...
  • guoying252166655
  • guoying252166655
  • 2014年10月25日 17:29
  • 1353

JAVA中内部类的继承和覆盖问题

JAVA的内部类继承与覆盖问题还是有一些细节方面需要注意的地方
  • ECH00O00
  • ECH00O00
  • 2017年07月26日 10:31
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:继承内部类的构造器问题
举报原因:
原因补充:

(最多只允许输入30个字)