一、关于this关键字的区别和理解
this是指当前对象的引用,可以用于调用类中的构造器、实例变量、实例方法和其他实例。在方法中,如果一个形参变量与实例变量同名,可以用this关键字来区分这两个变量。此外,在使用链式调用时,通过返回当前对象的引用(即this),可以实现链式调用方法。
- 调用类中的构造器
在一个类中,如果有多个构造器,可以通过this来调用其他构造器实现构造方法的重载。
public class Student {
private String name;
private int age;
public Student(String name) {
this.name = name;
}
public Student(String name, int age) {
this(name); //调用上面的构造器
this.age = age;
}
}
- 区分实例变量和方法形参变量
当实例变量和方法形参变量同名时,使用this关键字来区分它们。
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name; //使用this关键字来区分实例变量与形参变量
}
}
- 实现链式调用方法
通过返回当前对象的引用(即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; //返回当前对象的引用
}
}
二、关于super关键字的区别和理解
super是指当前对象的父类对象,可以用于访问父类中的实例变量和实例方法。
- 访问父类中的实例变量
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
private int age;
public Dog(String name, int age) {
super(name); //调用父类构造器
this.age = age;
}
public void printInfo() {
System.out.println(super.name + " " + age); //访问父类中的实例变量
}
}
- 访问父类中的实例方法
public class Animal {
public void sayHello() {
System.out.println("Hello, I'm an animal.");
}
}
public class Dog extends Animal {
public void sayHello() {
super.sayHello(); //访问父类中的实例方法
System.out.println("I'm a dog.");
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于java关键字this和super的区别和理解 - Python技术站