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中的特质是使用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中的对象实例。 |