Java中this和super关键字的使用详解
1. this关键字
this
关键字用于引用当前对象,它可以用来访问成员变量、成员方法、构造方法以及作为函数参数传递当前对象。
1.1 引用成员变量
在Java中,成员变量和局部变量可以重名,如果要在方法中使用成员变量而不是局部变量,可以使用this
关键字。
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
上述代码中,方法setName
和getName
中都有一个名为name
的变量,其中this.name
指向成员变量name
,name
则指向方法参数。
1.2 引用成员方法
在Java中,一个方法可以调用该对象的其他方法,也可以调用父类的方法。如果该方法中需要调用该对象的其他方法,可以使用this
关键字。
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void speak() {
System.out.println("Hello, my name is " + this.getName());
}
}
上述代码中,方法speak
中调用了该对象的getName
方法,并使用this
关键字来引用该方法。
1.3 调用构造方法
在Java中,构造方法可以相互调用,如果需要在一个构造方法中调用该类的另一个构造方法,可以使用this
关键字来引用。
public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0);
}
public Person(String name) {
this(name, 0);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
上述代码中,构造方法Person()
和Person(String name)
分别调用了构造方法Person(String name, int age)
,并使用this
关键字来引用。
2. super关键字
super
关键字用于引用父类的成员变量、成员方法、构造方法,并且它只能在子类中使用。
2.1 引用父类的成员变量和成员方法
在Java中,子类可以继承父类的成员变量和成员方法,在子类中如果要引用父类的成员变量和成员方法,可以使用super
关键字。
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println("The " + this.name + " is eating.");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void bark() {
System.out.println("The " + super.name + " is barking.");
}
public void eat() {
super.eat();
System.out.println("The " + super.name + " is eating bones.");
}
}
上述代码中,子类Dog
使用super
关键字引用父类的成员变量name
和成员方法eat
。
2.2 调用父类的构造方法
在Java中,子类的构造方法会隐式地调用父类的无参构造方法,如果需要显式地调用父类的有参构造方法,可以使用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;
}
}
上述代码中,子类Dog
显式地调用了父类Animal
的有参构造方法,并向其传递了参数name
。
总结
在Java中,this
关键字用于引用当前对象,可以用来访问成员变量、成员方法、构造方法以及作为函数参数传递当前对象。super
关键字用于引用父类的成员变量、成员方法、构造方法,并且它只能在子类中使用。这两个关键字的使用可以提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中this和super关键字的使用详解 - Python技术站