📜  在 Scala 中重写 toString() 方法

📅  最后修改于: 2022-05-13 01:55:13.487000             🧑  作者: Mango

在 Scala 中重写 toString() 方法

考虑以下 Scala 程序:

// Scala Program without override toString method
  
// Creating Class
class Language(LangArticle: Int, LangName: String) 
{
  
    // Defining getLangArticle method
    def getLangArticle() : Int = {
          
        return LangArticle;
    }
      
    // Defining getLangName method
    def getLangName() : String = {
          
        return LangName;
    }
  
}
  
// Creating object
object GFG 
{
    // Main method
    def main(args: Array[String])
    {
          
        var language = new Language(50, "Scala");
          
        println(language)
          
    }
}
输出:
Language@506e1b77

输出是类名,然后是“at”符号,最后是对象的 hashCode。 Scala 中的所有类都直接或间接地继承自 Object 类。对象类有一些基本方法,如clone()、toString()、equals()、..等。Object 中默认的toString() 方法打印“类名@哈希码”。我们可以在我们的类中重写 toString() 方法来打印正确的输出。下面是覆盖 toString 方法的示例。

// Scala Program to override toString method
  
// Creating Class
class Language(LangArticle: Int, LangName: String) 
{
  
    // Defining getLangArticle method
    def getLangArticle() : Int = {
          
        return LangArticle;
    }
      
    // Defining getLangName method
    def getLangName() : String = {
          
        return LangName;
    }
      
    // Overriding tostring method
    override def toString() : String = {
          
        return "[Total Article : " + LangArticle + 
                ", Language Name = " + LangName+"]";
    }
  
}
  
// Creating object
object GFG 
{
    // Main method
    def main(args: Array[String])
    {
          
        var language = new Language(50, "Scala");
          
        println(language)
          
    }
}
输出:
[Total Article : 50, Language Name = Scala]

在上面的示例语言类中,它覆盖了 toString() 方法并返回字符串值。此方法具有属性名称和值。该类定义了两个变量 LangArticle 和 LangName 以及三个方法:getLangArticle、getLangName 和 toString。 getLangArticle接受一个整数参数并返回一个值。 getLangName接受一个字符串参数并返回一个值。另一方面, toString确实接受任何参数,但返回一个 String 值。由于 toString 覆盖了预定义的 toString 方法,因此必须使用覆盖标志对其进行标记。

注意:当我们覆盖任何超类方法时。我们应该在方法之前使用override关键字(即:override def toString())。