形質(形質)
scala中没有Java中的接口(interface),替代的概念是——特质
定義された
特性は、コード再利用のScalaの基本単位である
メソッドとフィールドは、カプセル化され、その後クラスに追加することができ
、同じクラス継承されていない、スーパークラスの各クラス継承要件が継承することができますクラスが、クラスは、資質の任意の数を追加することができます。
定義や抽象クラスの定義のような特性が、それが使用された形質キーワード
構文
定義された文字の
形質名{
//フィールド抽象
//抽象メソッド
}
コピー
継承特性
クラスクラス2 {で形質形質1を拡張
における//フィールド
の//実行される方法
}
コピー
(スカラかクラス特性は、キーワード延び使用している)の使用は、継承された形質に延び
用い、複数の形質を継承しますキーを持つ
形質は、インターフェイスを使用した
trait作为接口使用,与java的接口使用方法一样。
例|継承された単一形質
の例が示す
ロガー形質を作成し、ログ抽象メソッドは、Stringパラメータを受け入れる追加
ConsoleLoggerクラスを作成するには、Loggerは、ログを達成するための方法を形質を継承し、印刷メッセージは
mainメソッドを追加し、作成ConsoleLoggerオブジェクトメソッド呼び出しログ
参照コード
trait Logger {
// 抽象方法
def log(message:String)
}
class ConsoleLogger extends Logger {
override def log(message: String): Unit = println("控制台日志:" + message)
}
def main(args: Array[String]): Unit = {
val logger = new ConsoleLogger
logger.log("这是一条日志")
}
結果:
例|継承つ以上の形質
の例が示す
するmessageSender品質を作成し、sendメソッドを追加する
方法受け取る追加、MessageReceiver品質を作成し
、これらの2つの性質を達成MessageWorkerを作成するために
、それぞれの方法の受信、メインにと呼ばれるが、sendメソッドを呼び出して
参照コードを:
trait MessageSender {
def send(msg:String)
}
trait MessageReceive {
def receive():String
}
class MessageWorker extends MessageSender with MessageReceive {
override def send(msg: String): Unit = println(s"发送消息:${msg}")
override def receive(): String = "你好!我叫一个好人!"
}
def main(args: Array[String]): Unit = {
val worker = new MessageWorker
worker.send("hello")
println(worker.receive())
}
結果:
実施例|オブジェクト継承形質の
例は示している
、ロガー形質を作成するログ抽象メソッドを追加
ConsoleLoggerにオブジェクトを作成するために、LoggerForObject特性を達成するために、ログを達成するための方法、メッセージ印刷
メインメソッドで記述されたが、ログメソッドConsoleLoggerを呼び出す
参照コード:
trait Logger {
def log(message:String)
}
object ConsoleLogger extends Logger {
override def log(message: String): Unit = println("控制台消息:" + message)
}
def main(args: Array[String]): Unit = {
ConsoleLogger.log("程序退出!")
}
結果: