1. this关键字
this关键字用于引用当前对象,可以在方法或构造函数中使用它来访问当前对象的属性和方法。例如:
public class MyClass {
private int value;
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
}
在上面的代码中,this.value引用了当前对象的value属性,setValue方法设置了当前对象的value属性,getValue方法返回当前对象的value属性。
this关键字也可以用于在构造函数中调用另一个构造函数。当一个类有多个构造函数时,可以使用this关键字来调用其中一个构造函数,以避免代码重复。例如:
public class MyClass {
private int value;
public MyClass() {
this(0);
}
public MyClass(int value) {
this.value = value;
}
}
在上面的代码中,无参构造函数调用了有参构造函数,以初始化value属性。
this关键字也可以用于返回当前对象。在链式调用中,可以使用this关键字来返回当前对象,以便可以在一个语句中调用多个方法。例如:
public class MyClass {
private int value;
public MyClass setValue(int value) {
this.value = value;
return this;
}
public void printValue() {
System.out.println("Value: " + value);
}
}
在上面的代码中,setValue方法返回当前对象,这样可以在调用该方法后继续对当前对象进行操作。
总之,this关键字是Java中的重要关键字之一,可以用于访问当前对象的属性和方法、构造函数的调用和返回当前对象。
2. super关键字的用法
使用super关键字可以调用父类的构造函数。在子类的构造函数中,可以使用super关键字来调用父类的构造函数,并在子类的构造函数中添加子类特有的初始化代码。例如:
public class SubClass extends SuperClass {
private int subValue;
public SubClass(int superValue, int subValue) {
super(superValue);
this.subValue = subValue;
}
}
在上面的代码中,SubClass继承了SuperClass,子类构造函数中使用super关键字调用了父类的构造函数,并添加了子类特有的初始化代码。
使用super关键字可以调用父类的属性和方法。在子类中,可以使用super关键字来访问父类中的属性和方法。例如:
public class SubClass extends SuperClass {
private int subValue;
public SubClass(int superValue, int subValue) {
super(superValue);
this.subValue = subValue;
}
public int getSuperValue() {
return super.getValue();
}
}
在上面的代码中,getSuperValue方法使用super关键字调用了父类的getValue方法。
使用super关键字可以防止子类覆盖父类的方法。在父类中,可以使用final关键字来标记方法为不可覆盖,而在子类中可以使用super关键字来调用父类的不可覆盖的方法。例如:
public class SuperClass {
public final void doSomething() {
System.out.println("SuperClass doSomething");
}
}
public class SubClass extends SuperClass {
public void doSomething() {
super.doSomething();
System.out.println("SubClass doSomething");
}
}
在上面的代码中,SuperClass中的doSomething方法被标记为final,不可覆盖,而SubClass中的doSomething方法使用super关键字调用了父类的doSomething方法,并添加了子类特有的代码。
总之,super关键字是Java中的重要关键字之一,可以用于调用父类的构造函数、属性和方法,以及防止子类覆盖父类的方法。