Java中超详细this与super的概念和用法
1. this关键字
在Java中,this关键字可以代表当前对象的引用。this关键字可以用于以下几种情况:
1.1 调用当前类的构造函数
在一个类中,可以存在多个构造函数,有些构造函数可能需要调用其它构造函数完成一些初始化操作,此时可以使用this关键字来调用当前类中的其它构造函数。
示例代码:
public class Student {
private String name;
private int age;
public Student() {
this("Unknown", 0);
}
public Student(String name) {
this(name, 0);
}
public Student(int age) {
this("Unknown", age);
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
1.2 解决变量重名问题
如果一个方法中存在一个局部变量,其与成员变量同名,那么在方法中引用该变量时,编译器默认使用局部变量,而不是成员变量。此时可以使用this关键字来引用成员变量。
示例代码:
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void printInfo(){
System.out.println("Name: " + this.name);
System.out.println("Age: " + this.age);
}
}
1.3 返回当前对象的引用
在一个方法中,可以使用this关键字来返回当前对象的引用。
示例代码:
public class Student {
private String name;
private int age;
public Student setName(String name) {
this.name = name;
return this;
}
public Student setAge(int age){
this.age = age;
return this;
}
public void printInfo(){
System.out.println("Name: " + this.name);
System.out.println("Age: " + this.age);
}
}
2. super关键字
在Java中,super关键字可以用来引用当前对象的父类对象。super关键字可以用于以下几种情况:
2.1 调用父类的构造函数
在一个子类的构造函数中,可以使用super关键字来调用其父类的构造函数。通过调用父类的构造函数,可以完成父类对象的初始化工作。
示例代码:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
}
2.2 引用父类的成员变量和成员方法
在一个子类中,可以使用super关键字来引用其父类中的成员变量和成员方法。如果一个子类中存在与父类同名的成员变量或成员方法时,使用super关键字可以明确地引用父类中的成员变量或成员方法。
示例代码:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + this.name);
}
}
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
@Override
public void sayHello() {
super.sayHello();
System.out.println("I am a student of " + this.school);
}
}
在上面的示例代码中,子类Student重写了父类Person的sayHello()方法,并在其中调用了父类Person中的sayHello()方法,可以使用super关键字来引用父类中的成员方法。
以上就是Java中this和super关键字的详细介绍和用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中超详细this与super的概念和用法 - Python技术站