Java中super和this的作用,并举例说明
时间: 2024-03-01 22:56:10 浏览: 82
在Java中,super和this都是关键字,分别表示父类和当前类的引用。它们的作用如下:
1. super关键字
super关键字用于访问父类中的属性和方法,可以在子类中通过super关键字来调用父类的构造方法、普通方法和属性。在以下三种情况下,需要使用super关键字:
- 子类需要调用父类的构造方法;
- 子类需要访问父类的被隐藏的属性或方法;
- 子类需要访问父类的方法,但又在子类中重写了该方法。
例如:
```
class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void sleep() {
System.out.println(name + " is sleeping.");
}
}
class Cat extends Animal {
public Cat(String name) {
super(name);
}
public void sleep() {
super.sleep();
System.out.println(name + " is also purring.");
}
}
Cat cat = new Cat("Tom");
cat.sleep();
```
在上述代码中,Cat类继承了Animal类,并重写了它的sleep方法。在Cat类中,通过super.sleep()调用了Animal类的sleep方法,从而实现了在Cat类中添加新的行为同时保留父类的行为。
2. this关键字
this关键字用于指代当前对象,可以在类中访问本类的属性和方法。在以下两种情况下,需要使用this关键字:
- 当前类的属性和方法与局部变量名字相同时,可以用this关键字来区分;
- 在构造方法中调用其他构造方法时,可以使用this关键字来调用本类的其他构造方法。
例如:
```
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this(name, 18);
}
public void sayHello() {
System.out.println("Hello, my name is " + this.name + ", I'm " + this.age + " years old.");
}
}
Person p1 = new Person("Bob", 20);
Person p2 = new Person("Alice");
p1.sayHello();
p2.sayHello();
```
在上述代码中,Person类有两个构造方法,其中一个调用了另一个构造方法。在sayHello方法中,使用了this关键字来访问本类的属性name和age,从而输出了一个人的基本信息。
阅读全文