Overriding toString() method in Scala

示例代码

不覆盖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

输出是,类名,然后@符号,最后是对象的hashCodeScala中的所有类都直接或间接地继承自对象类。这个对象类有一些基本的方法,比如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()方法并返回字符串值。这个方法有属性名和值。该类定义了两个变量LangArticleLangName,以及三个方法:getLangArticle、getLangNametoStringgetLangArticle接受一个整数参数并返回一个值。getLangName接受一个字符串参数并返回一个值。另一方面,toString接受任何参数,但返回一个字符串值。由于toString覆盖了预定义的toString方法,所以必须使用override标记对其进行标记。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章