写出Java中this和super的使用区别
时间: 2023-06-04 13:06:07 浏览: 126
在Java中,this和super都是关键字,用于访问对象的属性和方法。它们的区别在于:
1. this关键字用于访问当前对象的属性和方法,也可以用于调用该对象的构造方法。
2. super关键字用于访问父类的属性和方法,也可以用于调用父类的构造方法。
简单来说,this是指当前对象,而super是指父类对象。使用this和super可以避免同名属性或方法的冲突,同时也可以实现继承和多态等面向对象编程的特性。
相关问题
this和super什么含义?如何使用?(解释并写出相关代码)
`this`和`super`都是关键字,用于在Java中引用类的成员和方法。
`this`关键字用于引用当前对象的成员和方法。它有以下几种用途:
1. 引用当前对象的成员变量:
```java
public class Person {
private String name;
public Person(String name) {
this.name = name; // 使用this关键字引用成员变量
}
}
```
2. 引用当前对象的方法:
```java
public class Person {
private String name;
public Person(String name) {
this.setName(name); // 使用this关键字引用方法
}
public void setName(String name) {
this.name = name;
}
}
```
3. 在构造函数中调用另一个构造函数:
```java
public class Person {
private String name;
private int age;
public Person(String name) {
this(name, 0); // 调用另一个构造函数
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
```
`super`关键字用于引用父类的成员和方法。它有以下几种用途:
1. 引用父类的构造函数:
```java
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age); // 调用父类构造函数
this.school = school;
}
}
```
2. 引用父类的成员变量和方法:
```java
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
public void printInfo() {
System.out.println(super.getName()); // 引用父类的成员变量
super.printInfo(); // 引用父类的方法
}
}
```
以上是`this`和`super`关键字的一些基本用法,可以根据具体情况进行灵活运用。
this和super什么含义?如何使用?(解释并写出相关代码)—20分
`this` 关键字在 Java 中代表当前对象的引用。它可以用于在方法内部引用当前对象的成员变量和方法。
`super` 关键字在 Java 中代表父类对象的引用。它可以用于在子类中调用父类的成员变量和方法。
以下是使用 `this` 和 `super` 的示例代码:
```java
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
class Cat extends Animal {
int age;
public Cat(String name, int age) {
super(name);
this.age = age;
}
public void meow() {
System.out.println(name + " is meowing.");
}
}
public class Main {
public static void main(String[] args) {
Cat cat = new Cat("Tom", 2);
cat.eat(); // Tom is eating.
cat.meow(); // Tom is meowing.
}
}
```
在上面的代码中,`Animal` 是一个父类,`Cat` 是一个子类。`Cat` 类继承了 `Animal` 类,并添加了一个 `age` 属性和一个 `meow` 方法。
在 `Cat` 类的构造方法中,我们使用了 `super` 关键字来调用父类的构造方法,并传递了 `name` 参数。在 `Cat` 类的 `meow` 方法中,我们使用了 `this` 关键字来引用当前对象的 `name` 属性。
在 `Main` 类的 `main` 方法中,我们创建了一个 `Cat` 对象,并调用了它的 `eat` 和 `meow` 方法。`eat` 方法是从父类继承而来的,`meow` 方法是子类自己定义的。
阅读全文
相关推荐














