Java中的super和this是两个重要的关键字,在面向对象编程中常用于访问父类的属性和方法以及当前实例的属性和方法。本攻略将围绕这两个关键字详细讲解其对比和使用方法。
一、super和this的区别
1.1 定义
- super:关键字表示当前类的父类对象。
- this:关键字表示当前对象本身。
1.2 用法
- super:可以使用"super."的方式调用父类中的属性和方法。
- this:可以使用"this."的方式调用当前对象的属性和方法。
1.3 使用场景
- super:主要用于区分子类和父类同名的成员变量和成员方法。
- this:主要用于区分成员变量和局部变量,以及在方法内部调用当前对象的方法。
二、super的使用方法
2.1 调用父类构造方法
子类中使用super关键字可以调用父类的构造方法,如下:
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
private String breed;
public Dog(String name, String breed) {
super(name); // 调用父类构造方法
this.breed = breed;
}
}
2.2 调用父类属性和方法
子类中使用super关键字可以调用父类的属性和方法,如下:
public class Animal {
private String name;
public void eat() {
System.out.println(name + "在吃东西");
}
}
public class Dog extends Animal {
public void eat() {
super.eat(); // 调用父类方法
System.out.println("狗粮味道真不错");
}
}
三、this的使用方法
3.1 区分成员变量和局部变量
如果成员变量和局部变量同名,可以使用this关键字区分,如下:
public class Student {
private String name;
public void setName(String name) {
this.name = name; // 使用this关键字
}
}
3.2 调用当前对象方法
在方法内部可以使用this调用当前对象方法,如下:
public class Calculator {
private int result;
public Calculator add(int a) {
result += a;
return this; // 返回当前对象
}
public Calculator sub(int a) {
result -= a;
return this;
}
public int getResult() {
return result;
}
}
public class Test {
public static void main(String[] args) {
Calculator cal = new Calculator();
int result = cal.add(1).add(2).sub(1).getResult(); // 使用当前对象方法
System.out.println(result); // 输出结果3
}
}
四、总结
- super和this都是关键字,用于访问父类的属性和方法和当前对象的属性和方法。
- super和this的主要区别在于使用方式和场景不同。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java super和this的对比及使用 - Python技术站