当在某个类中定义同名的属性或方法时,Java使用关键字super和this来区分当前类中的成员和其从父类中继承的成员。本文将详细解释Java中super和this的用法。
1. super关键字的用法
关键字super可以用来引用父类中的域和方法。下面是两个示例:
示例1:
class Parent{
public int number = 10;
}
class Child extends Parent{
public int number = 5;
public void printNumber(){
System.out.println("子类的number值为:"+number);
System.out.println("父类的number值为:"+super.number);
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.printNumber();
}
}
输出结果:
子类的number值为:5
父类的number值为:10
在上面的代码中,父类Parent和子类Child都有一个名为number的成员变量。子类Child中的printNumber()方法使用关键字super来访问其从父类中继承的number属性。
示例2:
class Animal{
public void speak(){
System.out.println("动物发出了声音");
}
}
class Cat extends Animal{
@Override
public void speak(){
super.speak();
System.out.println("喵喵喵");
}
}
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
cat.speak();
}
}
输出结果:
动物发出了声音
喵喵喵
在上面的代码中,父类Animal有一个speak()方法,子类Cat通过使用关键字super来调用其父类的speak()方法。
2. this关键字的用法
关键字this用于引用当前类的属性或方法。在下面的两个示例中,我们将使用this来引用自己类中的成员变量或方法。
示例1:
class Student{
String name;
int age;
public Student(String name, int age){
this.name = name;
this.age = age;
}
public void printInfo(){
System.out.println("学生名字:"+name);
System.out.println("学生年龄:"+age);
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student("Tom", 18);
student.printInfo();
}
}
输出结果:
学生名字:Tom
学生年龄:18
在上面的代码中,this关键字用于引用当前类的成员变量name和age,以便在构造函数和printInfo()方法中使用它们。
示例2:
class Calculator{
private int num1;
private int num2;
public Calculator(int num1, int num2){
this.num1 = num1;
this.num2 = num2;
}
public int add(){
return this.num1 + this.num2;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator(10, 20);
System.out.println("计算结果为:" + calculator.add());
}
}
输出结果:
计算结果为:30
在上面的代码中,this关键字用于引用当前类的成员变量num1和num2,以便在add()方法中使用它们。
结论
super关键字用于引用父类中的方法和属性,this关键字用于引用当前类中的方法和属性。使用这两个关键字可以使你的代码更加清晰和易于理解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中super和this的用法详解 - Python技术站