在 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())。