示例代码
不覆盖toString方法
考虑一下的程序。再类中不适用toString
方法。
// 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
输出是,类名,然后@
符号,最后是对象的hashCode
。 Scala
中的所有类都直接或间接地继承自对象类。这个对象类有一些基本的方法,比如clone(), toString(), equals()
, …等。对象中的默认toString()
方法打印“类名@散列码”。我们可以在类中覆盖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
接受任何参数,但返回一个字符串值。由于toString
覆盖了预定义的toString
方法,所以必须使用override
标记对其进行标记。