示例代碼
不覆蓋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
標記對其進行標記。