# Java `this`和`super`之间的区别

> 原文： [https://howtodoinjava.com/java/basics/this-vs-super/](https://howtodoinjava.com/java/basics/this-vs-super/)

`this`和`super`在 Java 中是保留的[关键字](https://howtodoinjava.com/java-keywords/)。 `this`引用一个类的**当前实例**，而`super`引用该类的**父类**，其中使用了`super`关键字。

## 1\. Java `this`关键字

`this`关键字自动保留对类的当前实例的引用。 在我们要将方法从父类继承到子类，并要专门从子类调用方法的情况下，这非常有用。

我们也可以使用此关键字来访问类中的[静态](https://howtodoinjava.com/java/basics/java-static-keyword/)字段，但是建议的方法是使用类引用来访问静态字段，例如`MyClass.STATIC_FIELD`。

## 2\. Java `super`关键字

与`this`关键字相似，`super`在 Java 中也是保留关键字。 它始终保存对任何给定类的父类的引用。

使用`super`关键字，我们可以访问任何子类中父类的字段和方法。

## 3\. Java `this`和`super`关键字示例

在此示例中，我们有两个类`ParentClass`和`ChildClass`，其中`ChildClass`扩展`ParentClass`。 我在父类中创建了一个方法`showMyName()`，并覆盖了它的子类。

现在，当我们尝试使用`this`和`super`关键字在子类中调用`showMyName()`方法时，它将分别从当前类和父类中调用方法。

```java
public class ParentClass 
{	
	public void showMyName() 
	{
		System.out.println("In ParentClass");
	}
}

```

```java
public class ChildClass extends ParentClass 
{
	public void showMyName() 
	{
		System.out.println("In ChildClass");
	}

	public void test() 
	{
		this.showMyName();

		super.showMyName();
	}
}

```

```java
public class Main 
{
	public static void main(String[] args) 
	{
		ChildClass childObj = new ChildClass();

		childObj.test();
	}
}

```

程序输出。

```java
In ChildClass
In ParentClass

```

在此 Java 教程中，我们学习了`this`以及`super`关键字。 我们还学习了在 Java 应用程序中使用这两个关键字。

学习愉快！