this 和 super 关键字有什么作勇,请写程序说明?
时间: 2024-02-13 08:02:02 浏览: 20
this 和 super 是 Java 中两个关键字,用于引用当前对象和父类对象。
this 关键字通常用于以下情况:
1. 引用当前对象的成员变量和方法。例如,this.name 表示当前对象的 name 成员变量。
2. 在构造方法中调用其他构造方法。例如,this(name) 表示调用当前类中的另一个构造方法,并传递一个 name 参数。
3. 返回当前对象。例如,return this 表示返回当前对象。
super 关键字通常用于以下情况:
1. 调用父类的构造方法。例如,super(name) 表示调用父类的一个构造方法,并传递一个 name 参数。
2. 引用父类的成员变量和方法。例如,super.name 表示父类的 name 成员变量。
下面是一个简单的程序,演示了如何使用 this 和 super 关键字:
```
class Animal {
String name;
Animal(String name) {
this.name = name;
System.out.println("Animal constructor");
}
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
String breed;
Dog(String name, String breed) {
super(name);
this.breed = breed;
System.out.println("Dog constructor");
}
void bark() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Buddy", "Labrador");
System.out.println("Dog name: " + dog.name);
System.out.println("Dog breed: " + dog.breed);
dog.eat();
dog.bark();
}
}
```
在上面的程序中,Animal 类和 Dog 类继承了 Object 类,Dog 类继承了 Animal 类。Dog 类的构造方法中调用了父类的构造方法,使用了 super 关键字。Dog 类的成员变量 name 和 breed 使用了 this 关键字和 super 关键字。Dog 类的方法 bark() 和 Animal 类的方法 eat() 没有使用 this 和 super 关键字。执行上面的程序,输出结果为:
```
Animal constructor
Dog constructor
Dog name: Buddy
Dog breed: Labrador
Animal is eating
Dog is barking
```