this代表的是本类对象的引用。
super代表的是父类对象的引用。
class Fu
{
int num=4;
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println(super.num);//为什么说这里super代表父类对象的引用呢?明明只建立了一个子类对象z
}
}
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z=new Zi();//只建立了一个子类对象z
z.show();//z调用show(),哪里来的父类对象呢?
//System.out.println(z.num1+".."+z.num2);
}
}
作者: 李志广 时间: 2012-7-6 14:35
super和this的异同:
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
希望对你有所帮组!!!{:soso_e100:}作者: 谭培龙 时间: 2012-7-6 14:37
class Fu
{
int num=4;
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println(super.num);//子类里面也有num对象,如果不加super默认是对本类对象引用,系统会自动添加this。因为本类继承了父类,所以可以直接调用父类对象的引用。因此需要用到super关键字。
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z=new Zi();//只建立了一个子类对象z
z.show();//z调用show(),哪里来的父类对象呢? 加载子类时会先加载父类。 //System.out.println(z.num1+".."+z.num2);
}
}作者: 余清兰 时间: 2012-7-6 14:44 本帖最后由 余清兰 于 2012-7-6 14:47 编辑
this代表的是本类对象的引用。
super代表的是父类对象的引用。
class Fu
{
int num=4;
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println(super.num); //为什么说这里super代表父类对象的引用呢?明明只建立了一个子类对象z
//这里写super非常合理,因为根据继承特性,相当于子类建立的对象 z 拥有了两个同名变量num,
这里既可以写this也可以写super,super的其中一项应用就是为此而存在的!
//如果还不明白,请从新观看day7关于继承的视频,重新学习总结。
}
}
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z=new Zi();//只建立了一个子类对象z
z.show(); //z调用show(),哪里来的父类对象呢?
//还是跟上边一样的问题,根据继承的特性 z 为子类对象就拥有父类一切属性和行为特性。
//System.out.println(z.num1+".."+z.num2);
}
}作者: 夏儒日 时间: 2012-7-6 22:17
java中,在使用new操作符创建一个类的实例对象的时候,开始分配空间并将成员变量初始化为默认的数值,注意这里并不是指将变量初始化为在变量定义处的初始值,而是给整形赋值0,给字符串赋值null,然后进入类的构造函数。
在构造函数里面,首先要检查是否有this或者super调用,super调用是完成对父类的调用。
Zi z=new Zi();//只建立了一个子类对象z
执行的时候会调用父类的构造函数那么在
z.show();的时候 就会把父类的num也就是4打印出来