Scala中Traits与抽象类的区别

Scala中的抽象类

Scala中的Abstract类是使用abstract关键字创建的。抽象类中包含抽象方法和非抽象方法。

它们不支持多重继承。

语法:

abstract class class_name{
	def abstract_mathod
	def general_method(){
	}
}

示例

abstract class bike 
{ 
	def speed  
	def display() 
	{
		println("This is my new Bike") ;
	}
} 

class ninja400 extends bike 
{ 
	def speed() 
	{ 
		println("Top Speed is 178 Kmph"); 
	} 
} 

object myObject 
{ 
	def main(args: Array[String]) 
	{ 
		var obj = new ninja400(); 
		obj.display() ;
		obj.speed() ;
	} 
}

输出结果

This is my new Bike
Top Speed is 178 Kmph

Scala 特质

Scala中的特质是使用trait关键字创建的。特性包含抽象和非抽象的方法和字段。这些类似于Java中的接口。它们还允许多重继承,并且与Java中的继承者相比,它们更强大。

语法:

trait trait_name{
}

示例

trait bike 
{ 
	def speed  
	def display() 
	{ 
		println("This is my new Bike") ;
	} 
} 

class ninja400 extends bike 
{ 
	def speed() 
	{ 
		println("Top Speed is 178 Kmph"); 
	} 
} 

object myObject 
{ 
	def main(args: Array[String]) 
	{ 
		var obj = new ninja400(); 
		obj.display() ;
		obj.speed() ;
	} 
}

输出结果

This is my new Bike
Top Speed is 178 Kmph

抽象类和特质之间的区别

特质抽象类
允许多个继承。不允许多重继承。
Trait中不允许使用构造函数参数。抽象类中允许使用构造函数参数。
特质代码在实施之前是可以互操作的。抽象类的代码是完全可互操作的。
可以将特质添加到Scala中的对象实例。无法将抽象类添加到Scala中的对象实例。