this关键字
1)在类的内部代表对象本身,你应该看到过this.xxx(),this.xxx这种用法吧,
this就代表这个类的对象,比如
public class A {
}
2)this的第二种用法,是用在构造函数里的
当在构造器里要调用自己的其他构造器时,就用this
this必须放在第一行
public class A {
}
super关键字
1)显式的调用父类的方法
当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super,像继承swing的类时就有个好例子
public class MyPanel extends JPanel {
}
2)用在构造器,和this的用法一样,super也可以用在构造器,this是调用自己的其他构造器,那么super当然就是调用父类的构造器了
-------------------------------------------------------
super和this用在构造器的话,前者表示调用父类的构造器,后者表示调用本类的其他构造器,他们两个都必须是写在构造器里的第一行
public class Person {
}
public class Student extends Person {
}
-----------------------------------------------------华丽的分割线-------------------------------------------------
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();
}}