super指代的是父类对象,this指代的是当前对象。

构造方法中:

对于super关键字,如果父类的构造方法需要参数,则子类的构造方法中必须通过super(参数名)显式调用父类中的某一个构造方法;

代码:

//父类public class Father {public Father(int a) {}}//子类public class Child extends Father{public Child() {//因为父类中只有一个有参构造,所以子类的构造方法中必须通过super调用super(2);}}

对于this关键字,当一个类存在多个构造方法时,为了方便,会通过this(参数名)调用本类中的其他构造方法,与方法重载效果一致。

代码:

public class Father {//单参数构造public Father(int a) {//通过this关键调用下方双参数的构造,这样可以避免构造方法中代码的重复编写this(a, a);}//双参数构造public Father(int a, int b) {}}

方法、代码块中:

对于super关键字,通过super.父类方法名(参数) 调用父类方法,如果子类中不存在与父类同名的方法,直接使用父类方法名(参数) 调用也可以;

对于this关键字,通过this.方法名(参数) 调用当前类方法,如果当前类中存在与父类同名的方法,直接使用方法名(参数) 调用默认使用当前类中方法。

代码:

//父类public class Father {public void getA() {}}//子类public class Child extends Father{public void getA() {}public void getB(){//调用父类方法super.getA();//调用子类方法getA();this.getA();}}

调用变量时:

对于super关键字,通过super.变量名称 调用父类变量,如果子类中不存在与父类变量同名的变量,直接使用变量名 调用也可以;

对于super关键字,通过this.变量名称 调用当前类的成员变量,如果子类中不存在与父类变量同名的变量,直接使用变量名 调用也可以,同时this关键字只能用于调用成员变量,所以当一个方法中存在同名的成员变量和局部变量时,使用this区分,局部变量优先级 > 成员变量 > 父类变量。

//父类public class Father {int a = 5;}//子类public class Child extends Father{int a = 6;public void getB(int a){//调用父类变量System.out.print(super.a);//调用当前类成员变量System.out.print(this.a);//调用局部变量,默认调用的就是局部变量System.out.print(a);}}
分类: 游戏攻略 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录