软讯网络 > 编程语言 > Java > 关于super指针指向的父类非静态变量
【标 题】:关于super指针指向的父类非静态变量
【关键字】:
super
【来 源】:http://blog.csdn.net/freedian/archive/2006/07/28/994766.aspx
关于super指针指向的父类非静态变量

最近在学习java,还是超级大菜鸟。
我们知道,super指针是指向父类,让我们访问负累的变量、函数或者方法的。
可是,今天学习碰到一个疑惑,后来自己想通了。
比如以下代码:
class FahterClass{
int a;
}class SonClass extends FatherClass{
void takeFather()
{
super.a = 100;
}
}
我们知道,一个非静态的变量,是属于实例的,在内存里面,一个实例的非静态变量有自己的空间。
这里的FatherClass里面的a是一个非静态变量,可是在SonClass里面,却给一个非静态变量赋值super.a = 100。
我们自然会想,这个时候,这个a存到哪里去了,又没有实例。或者到底super本身就是一个实例?
显然,说super本身是一个实例是错的。
其实,我们在用SonClass实例化一个对象的时候,自然给这个实例分配了父类的非静态变量的内存空间。想到这里,方才恍然大悟。
不知道对不对,大家帮我看看吧。