Scalaの形質(機能)
Scalaの形質(特性)同等のJavaインタフェースは、実際には、それはまた、インタフェースよりも強力です。
インターフェイスはプロパティとメソッドの定義を達成することができ、異なっています。
通常の状況下ではScalaのクラスは、単一の親を継承するが、形質(機能が)、あなたは結果から、複数の継承できる場合は、複数の継承を実装することであることができます。
情報形質(機能)は、クラスの定義と同様であるが、以下のように、キーワード形質を使用しています。
trait Equal { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x) }
isEqualとisNotEqual:2つの方法で構成形質(特性)上記。 isEqualメソッドは、それがのメソッドを定義isNotEqual、実装定義の方法ではありません。 サブクラスが継承する機能を実現することができる方法が実装されていません。 Javaの抽象クラスのような実際にはScalaのトレイト(機能が)だから。
次の例では、完全な機能を紹介します:
/* 文件名:Test.scala * author:本教程 * url:www.w3write.com */ trait Equal { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x) } class Point(xc: Int, yc: Int) extends Equal { var x: Int = xc var y: Int = yc def isEqual(obj: Any) = obj.isInstanceOf[Point] && obj.asInstanceOf[Point].x == x } object Test { def main(args: Array[String]) { val p1 = new Point(2, 3) val p2 = new Point(2, 4) val p3 = new Point(3, 3) println(p1.isNotEqual(p2)) println(p1.isNotEqual(p3)) println(p1.isNotEqual(2)) } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test false true true
工事発注の特性
機能では、コンストラクタを持つことができ、初期化フィールドの声明による身体の他の特徴は構成される。 特徴とする構造に混入任意のオブジェクトでこれらのステートメントが実行されます。
コンストラクタの実行順序:
- スーパークラスのコンストラクタを呼び出します。
- クラスのコンストラクタの実行前にスーパークラスのコンストラクタの後に特徴付けコンストラクタ;
- 形質は、左から右に設定されています。
- 親の形質間の各機能は、最初に構築しました。
- 複数の機能の親の特性がある場合は、親の形質は、以下の構造を省略する
- すべての機能が完成し、サブクラスが構築されるように構成されています。
コンストラクタは、逆クラスの線状配列です。 線形化は、超親切な技術仕様のすべての種類のタイプを記述することです。