关于Java语言的一个问题?
我想问一下大家,在Java中,this和super的用法,大家能帮我举个简单的例子,我不太懂。最好有点注释,谢谢大家。...
我想问一下大家,在Java中,this和super的用法,大家能帮我举个简单的例子,我不太懂。最好有点注释,谢谢大家。
展开
8个回答
展开全部
一、基础知识
1、super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2、this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3、super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时)
如:super.变量名
super.成员函数据名(实参)
4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
二、应用实例
class Point
{ private int x,y;
public Point(int x,int y)
{
this.x=x; //this它代表当前对象名
this.y=y;
}
public void Draw()
{
}
public Point()
{
this(0,0); //this(参数)调用本类中另一种形成的构造函数
}
}
class Circle extends Point
{
private int radius;
public circle(int x0,int y0, int r )
{
super(x0,y0); //super(参数)调用基类中的某一个构造函数
radius=r;
}
public void Draw()
{
super.Draw(); //super它引用当前对象的直接父类中的成员
drawCircle();
1、super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2、this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3、super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时)
如:super.变量名
super.成员函数据名(实参)
4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
二、应用实例
class Point
{ private int x,y;
public Point(int x,int y)
{
this.x=x; //this它代表当前对象名
this.y=y;
}
public void Draw()
{
}
public Point()
{
this(0,0); //this(参数)调用本类中另一种形成的构造函数
}
}
class Circle extends Point
{
private int radius;
public circle(int x0,int y0, int r )
{
super(x0,y0); //super(参数)调用基类中的某一个构造函数
radius=r;
}
public void Draw()
{
super.Draw(); //super它引用当前对象的直接父类中的成员
drawCircle();
展开全部
this是指当前对象的引用,super是指父类的引用
class A{
A(){}
}
class B{
int i;
B(int i){
super();
this.i=i;
}
}
class A{
A(){}
}
class B{
int i;
B(int i){
super();
this.i=i;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕!资料多多的。,还用问?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
super就是调用交类的构造方法,this其实就是指本类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this 指当前对象
super指其父类对象
super指其父类对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class A {
int a;
public A(int a){
this.a = a;
}
}
class B extends A{
int b,c;
public B(int a,int b,int c){
super(a);//super()就是调用父类的默认的构造函数,根据super()内的
//参数形式,来调用父类"存在"且相对应的构造函数;
this.b = b;
this.c = c;
//super():(1)调用父类"存在"的构造器
// (2)必须放在子类造器的第一行
}; // (3)如果子类的构造器中没有显示的调用父类任何的构造器,系统将会自动的调用父类的默认的构造器,即super();
}
this(参数列表):当前对象的引用,调用本类存在的构造器
super(参数列表):父类节点的引用,调用父类存在的构造器
懂了撒
int a;
public A(int a){
this.a = a;
}
}
class B extends A{
int b,c;
public B(int a,int b,int c){
super(a);//super()就是调用父类的默认的构造函数,根据super()内的
//参数形式,来调用父类"存在"且相对应的构造函数;
this.b = b;
this.c = c;
//super():(1)调用父类"存在"的构造器
// (2)必须放在子类造器的第一行
}; // (3)如果子类的构造器中没有显示的调用父类任何的构造器,系统将会自动的调用父类的默认的构造器,即super();
}
this(参数列表):当前对象的引用,调用本类存在的构造器
super(参数列表):父类节点的引用,调用父类存在的构造器
懂了撒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询