Scala教程
Scala面向对象
Scala高级

Scala Trait

Scala Trait

Trait 就像一个带有部分实现的接口。在 scala 中,trait 是抽象和非抽象方法的集合。您可以创建可以包含所有抽象方法或一些抽象方法和一些非抽象方法的特征。
在特征中使用 val 或 var 关键字声明的变量在实现的类中内部实现特质。任何使用 val 或 var 声明但未初始化的变量都被认为是抽象的。
特征被编译成 Java 接口,并带有相应的实现类,这些实现类包含在特征中实现的任何方法。

Scala 特性示例

trait Printable{
    def print()
}
class A4 extends Printable{
    def print(){
        println("Hello")
    }
}
object MainObject{
    def main(args:Array[String]){
        var a = new A4()
        a.print()
    }
}
输出:
Hello

如果一个类扩展了一个 trait 但没有实现该 trait 中声明的成员,则必须将其声明为抽象类。让我们看一个例子。

Scala Trait Example

trait Printable{
    def print()
}
abstract class A4 extends Printable{          // Must declared as abstract class
   def printA4(){
       println("Hello, this is A4 Sheet")
   }
}

Scala Trait 示例: 在一个类中实现多个 Traits

如果一个类实现了多个 trait,它将继承第一个 trait,类,抽象类。 with 关键字用于扩展其余的 trait。
您可以通过使用 trait 来实现多重继承。
trait Printable{
    def print()
}
trait Showable{
   def show()
}
class A6 extends Printable with Showable{
    def print(){
        println("this is printable")
    }
    def show(){
        println("this is showable");
    }
}
object MainObject{
    def main(args:Array[String]){
        var a = new A6()
        a.print()
        a.show()
    }
}
输出:
this is printable
this is showable

Scala Trait 具有抽象和非抽象方法

您也可以像在抽象类中一样在 trait 中定义方法。 IE。您也可以将 trait 视为抽象类。在 scala 中,trait 几乎与抽象类相同,只是它不能有构造函数。您不能扩展多个抽象类,但可以扩展多个特征。

Scala Trait 示例

trait Printable{
    def print()         // abstract method
    def show(){         // Non-abstract method
        println("this is show method")
    }
}
class A6 extends Printable{
    def print(){
        println("this is print method")
    }
}
object MainObject{
    def main(args:Array[String]){
        var a = new A6()
        a.print()
        a.show()
    }
}
输出:
this is print method
this is show method
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4