Scala中抽象类(abstract)和特质(trait)的异同

  • 抽象类和特质都可以同时定义抽象方法和实现方法
  • 抽象类和特质都可以使用匿名子类的方式实例化
  • 抽象类可以和普通类一样具有构造函数和辅助构造函数,在匿名子类实例化的时候和普通类一样传参调用构造函数,而特质在Scala3.0之前没有参数特性
  • 由于Scala是单继承的,只能使用 extends 关键词扩展一个抽象类,但是却可以使用 with 关键词扩展多个特质
  • extends 关键词可以用于抽象类和特质,with 关键词只能用于特质

你可能感兴趣的:(Scala中抽象类(abstract)和特质(trait)的异同)