覆蓋 Java 中的 toString 方法

Rupam Yadav 2023年10月12日
覆蓋 Java 中的 toString 方法

我們經常在 Java 中使用字串,因為它們是每個程式的重要組成部分。在本教程中,我們將使用一個簡單的示例來了解如何覆蓋 Java 中的 tostring() 方法以更好地理解該概念。

在 Java 中使用 @Override 註釋覆蓋 toString() 方法

toString() 方法是 Object 類的一部分,它是 Java 中每個類的超類。這意味著每個類都有自己的 toString() 方法。但是我們不會每次都從預設的 toString() 方法中獲得所需的輸出。這是我們必須覆蓋該方法並根據我們的需要對其進行自定義的時候。

為了演示如何覆蓋 toString() 方法,我們將看到兩個示例,一個沒有覆蓋 toString() 方法,另一個覆蓋了該方法。

在下面的示例中,我們有一個類 ExampleClass,其中包含在建構函式中初始化的三個變數。當我們使用傳遞的引數建立 ExampleClass 類的物件然後列印該物件時,我們會得到一個對人類沒有意義且不可讀的物件。這是因為,當列印 exampleClass 時,會呼叫其預設的 toString()。但是我們想將變數的值列印為字串。為此,我們將在下一個示例中覆蓋 toString() 方法。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }
}

輸出:

ExampleClass@37bba400

在下面的程式碼中,我們採用與之前相同的示例,但這次我們使用 @Override 註釋覆蓋了 toString() 方法,並將方法名稱寫為 toString(),返回型別為 String。我們可以手動執行此操作,也可以使用許多 IDE 中包含的快捷方式。

由於該方法返回一個字串,我們必須構造它。我們將變數與 String 連線起來形成一個 String。最後,當我們建立一個 exampleClass 的物件並列印它時,我們會得到一個字串的輸出,其中包含傳遞的變數的值。這是因為我們重寫了 toString() 方法來指定我們自己的實現。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }

  @Override
  public String toString() {
    return "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", age=" + age;
  }
}

輸出:

firstName='Alex', lastName='Novel', age=24
作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java Override