关于java内部类的继承

来源:百度知道 编辑:UC知道 时间:2024/05/27 06:20:21
请看以下程序:
class Outer
{
class Inner
{
}
}

class A
{
A(Outer o)
{
o.super;//问题处,见下方
}
public static void main(String [] args)
{
Outer o =new Outer();
A a = new A(a);
}
}

请问在问题处o.super的功能是什么?
我见到的说明是“建立内部类对象到指定的外部类对象的引用关系”不是很理解,请各位给出更明白的指点!
另外,请给出super的总结用法(全点的),谢谢了!
o.super;//问题处,见下方
此处应改为o.super();

class A
此处应改为class A extends Outer.Inner

这样程序就是没问题的了 只是我抄的时候落下落 问题依然不变

首先你要理解什么是引用:
String str = new String("haha");
这里的str不是一个实例,实例是"haha",str只是这个实例的内存地址的引用
如果执行str = "HAHA";并不是用HAHA覆盖原来的实例haha这时候haha仍然存在在内存中(一段时间后他会被垃圾回收机制回收),只是str这个被声明为String类型的引用指向了新的地址(HAHA的地址);
现在明白了,变量就是一个引用,引用是什么.那么再来看super关键字会明白许多.

说实话我没看懂你的程序,而且刚刚4了下,程序是有问题的o.super;这是什么?我都不知道,编译都要出错......
super关键字就是对父类的直接引用.
比如class A{
int a;
void setA(int a){
this.a = a
}
int getA(){
return a;
}
}
class B extends A{
int a;
B(){
super();//调用父类的构造方法
}
void setA(){
this.a = super.getA();//引用父类的getA()方法
}
void setBack(){
super.a = this.getA();//super.a引用父类中的变量a,this.getA();引用本类的getA()方法
}
int getA(){
return a;//返回本类中的变量a;
}
int getSuperA(){
return super.a;//返回父类中的变量a;
}
}

1 super(1234); 调用父类的构造器
2 Outer.super(1234); 调用外