JAVA super和this
时间: 2024-05-21 14:11:05 浏览: 12
super和this是Java中两个关键字,它们都用于引用对象的属性和方法,但是它们的含义和用法不同。
super关键字表示父类,它可以用来引用父类的属性和方法。当子类继承了父类后,如果子类需要访问父类中的属性或方法,就可以使用super关键字。例如,可以使用super来调用父类的构造方法,以便在创建子类对象时初始化父类的属性。
this关键字表示当前对象,它可以用来引用当前对象的属性和方法。this关键字通常在构造方法中使用,用来区分成员变量和局部变量。如果一个方法中存在局部变量和成员变量同名的情况,可以使用this关键字来指定访问成员变量。
总之,super关键字用于引用父类的属性和方法,this关键字用于引用当前对象的属性和方法。它们都是Java中非常重要的关键字,能够帮助程序员更好地理解和使用面向对象编程语言的特性。
相关问题
java实现super和this调用
在 Java 中,super 和 this 是关键字,用于调用父类和当前类的成员变量和成员方法。
使用 super 调用父类的成员变量和成员方法,格式为:super.成员变量名或方法名。
例如:
```java
class Animal {
int age = 1;
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
int age = 2;
void eat() {
super.eat(); // 调用父类的 eat 方法
System.out.println("Dog is eating");
}
void printAge() {
System.out.println(super.age); // 调用父类的 age 成员变量
System.out.println(this.age); // 调用子类的 age 成员变量
}
}
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.printAge();
}
}
```
使用 this 调用当前类的成员变量和成员方法,格式为:this.成员变量名或方法名。
例如:
```java
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name; // 使用 this 调用当前类的成员变量
this.age = age;
}
void printInfo() {
System.out.println("Name: " + this.name); // 使用 this 调用当前类的成员变量和成员方法
System.out.println("Age: " + this.getAge());
}
int getAge() {
return this.age;
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person("Tom", 20);
person.printInfo();
}
}
```
java构造方法super和this
Java中的构造方法是用来初始化对象的。super和this是两个关键字,它们都可以在构造方法中使用。
super关键字表示父类,它可以调用父类的构造方法。在子类的构造方法中,可以使用super关键字来调用父类的构造方法。例如:
```
public class SuperClass {
public SuperClass() {
System.out.println("SuperClass Constructor");
}
}
public class SubClass extends SuperClass {
public SubClass() {
super(); // 调用父类的构造方法
System.out.println("SubClass Constructor");
}
}
```
this关键字表示当前对象,它可以调用本类的其他构造方法。在一个类中,可能会有多个构造方法,它们可以通过this关键字来相互调用。例如:
```
public class MyClass {
private int num;
private String name;
public MyClass() {
this(0, ""); // 调用另一个构造方法
}
public MyClass(int num) {
this(num, ""); // 调用另一个构造方法
}
public MyClass(String name) {
this(0, name); // 调用另一个构造方法
}
public MyClass(int num, String name) {
this.num = num;
this.name = name;
}
}
```
通过使用super和this关键字,我们可以方便地在构造方法中调用父类的构造方法或者本类的其他构造方法,从而实现对象的初始化。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)