public class EnclosingClass {
public class Inner {
Inner(int a ) { /* Constructor code */}
}
}
class SubClassOfInner extends EnclosingClass.Inner { /**
* @param enclosingClass
* @param a
*/
SubClassOfInner(EnclosingClass enclosingClass, int a) {
enclosingClass.super(a);
// TODO 自动生成构造函数存根
}
//how to write a constructor?
}
看上面的类的EnclosingClass.super(a);
这段话是什么意思???????,一直没有看懂,迷惑很久了,请高人指点
enclosingClass.super(a);enclosingClass的super应该是指object对象啊
public class Inner {
Inner(int a ) { /* Constructor code */}
}
}
class SubClassOfInner extends EnclosingClass.Inner { /**
* @param enclosingClass
* @param a
*/
SubClassOfInner(EnclosingClass enclosingClass, int a) {
enclosingClass.super(a);
// TODO 自动生成构造函数存根
}
//how to write a constructor?
}
看上面的类的EnclosingClass.super(a);
这段话是什么意思???????,一直没有看懂,迷惑很久了,请高人指点
enclosingClass.super(a);enclosingClass的super应该是指object对象啊
SubClassOfInner是Inner的子类
在SubClassOfInner的带参构造函数中,要调用Inner带参构造函数,应用super代表
但Inner是EnclosingClass的内部类,在引用时要用:
EnclosingClass.super(a);
如果不是内部类只要用:super(a);
SubClassOfInner是Inner的子类
在SubClassOfInner的带参构造函数中,要调用Inner带参构造函数,应用super代表
但Inner是EnclosingClass的内部类,在引用时要用:
EnclosingClass.super(a);
如果不是内部类只要用:super(a);正解了,主要原因就是Inner类是EnclosingClass类的内部类,Inner的实例是存在在某一个EnclosingClass类的实例当中的,如果单用super(a);调用的话,就没有办法找到Inner类的构造函数,就会出错,所以必须用EnclosingClass类的一个实例来指明Inner类的构造函数所在位置。
----
这里的enclosingClass代表的含义是偏移量,指向匿名内部类的地址
SubClassOfInner是Inner的子类
在SubClassOfInner的带参构造函数中,要调用Inner带参构造函数,应用super代表
但Inner是EnclosingClass的内部类,在引用时要用:
EnclosingClass.super(a);
如果不是内部类只要用:super(a);正解了,主要原因就是Inner类是EnclosingClass类的内部类,Inner的实例是存在在某一个EnclosingClass类的实例当中的,如果单用super(a);调用的话,就没有办法找到Inner类的构造函数,就会出错,所以必须用EnclosingClass类的一个实例来指明Inner类的构造函数所在位置。楼上回答的很正确了~
继承的 EnclosingClass.Inner 这个类super 是父类 也就是EnclosingClass.Inner
你用 构造函数 并传了一个参数