this关键字和super关键字
Posted caozx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this关键字和super关键字相关的知识,希望对你有一定的参考价值。
一、this
Java中为了解决变量的命名冲突和不确定性问题,引入了关键字this。this代表当前类的一个实例,它经常出现在方法和构造方法中,具体使用情况有以下三种:
1,返回调用当前方法的对象的引用。
package test;
public class Increase {
private int i = 0;
public Increase operation(){
i++;
return this;
}
public void show(){
System.out.println(i);
}
public static void main(String[] args) {
Increase in = new Increase();
in.show();
in.operation().operation().show();;
}
}
上面的this表示的Increase的实例,也就是in。
2,在构造方法中调用当前类的其它构造方法。
package test;
public class Person {
private String name;
private int age;
private String sex;
Person(){
sex = "male";
}
Person(String _name){
this();//这个必须放在构造方法体的开头
name = _name;
}
Person(String _name,int _age){
this(_name);
age = _age;
}
}
上面的Person类有三个构造方法,分别为无参的、一个参数的和两个参数的。使用this提高了代码的重复利用。
3,当方法的参数名和成员变量名相相同时,用于区分参数名和成员变量名。
public class Person {
private String name;
private int age;
private String sex;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
}
二、super
super代表父类的实例,在子类中,使用super可以调用其父类的方法、属性和构造方法。
1,调用父类的构造方法
public class Student extends Person {
private String stuNo;
private String grade;
public Student(){
super();
}
public Student(String name ,String stuNo,String grade){
super(name);
this.stuNo = stuNo;
this.grade = grade;
}
}
调用父类无参的构造函数和单参的构造函数。ps:若父类中无对应的构造函数,将会出现编译错误。
2,调用父类的属性和方法
public class Student extends Person {
private String stuNo;
private String grade;
public Student(){
super();
}
public Student(String name ,String stuNo,String grade){
super(name);
this.stuNo = stuNo;
this.grade = grade;
}
public void show(){
super.show();//调用父类的函数
System.out.println(stuNo);
System.out.println(grade);
}
}
以上是关于this关键字和super关键字的主要内容,如果未能解决你的问题,请参考以下文章