スカラのオブジェクト指向プログラミングオブジェクト

このオブジェクトもその Javaの豆のオブジェクトがあるScalaのオブジェクトのオブジェクト

オブジェクト

 

//オブジェクト、同等クラス通常、いくつかの静的に置かれている単一のインスタンス、フィールドメソッド

// 最初の呼び出しのオブジェクトメソッドが実行されるオブジェクトコンストラクタは、あるオブジェクトではない内部メソッドのコード;しかし、オブジェクトは、のパラメータの定義を受け入れることができないコンストラクタ

// 注、オブジェクトコンストラクタ後でもう一度呼ばれ、一度だけ、それが最初に呼ばれたときは、再び実行されることはありませんコンストラクタ

//オブジェクトは、典型的にはシングルモードの実施例として使用される、または置かれるクラスようなツールの方法として、静的メンバを

 

対象者{

  プライベートVAR eyeNum = 2

  println( "このPersonオブジェクト!")

  DEF getEyeNum = eyeNum

}

 

関連するオブジェクト

// がある場合は、クラスがあり、そこにあるクラスの同じ名前のオブジェクトは、この呼び出しオブジェクトがあるクラスに関連するオブジェクトの、クラスがあるオブジェクトコンパニオンクラスのは、

// コンパニオンクラスと関連付けられているオブジェクトが中に格納されている必要があり.scala ファイルの中

// コンパニオンクラスと関連オブジェクトは、最大の特徴は、それぞれがアクセスできるということであるプライベートフィールドを

 

対象者{

  プライベートヴァルeyeNum = 2

  DEF getEyeNum = eyeNum

}

 

クラスPerson(ヴァル名:文字列、ヴァル年齢:INT){

  DEFのsayHello =のprintln( "こんにちは、" +名+は+年齢+ "私はあなたがいると思う "" 歳!" + "および通常はあなたが持っている必要があります "+ Person.eyeNum +" 目。")

}

 

ましょうオブジェクトは、抽象クラスを継承しています

//オブジェクトの機能と事実にクラスはあなたが許容可能なパラメータを定義することができないことを除いて、似ているコンストラクタ

//オブジェクトは、抽象クラス、抽象クラスとメソッドカバレッジを継承することができます

 

抽象クラスこんにちは(VARメッセージ:文字列){

  デフのsayHello(名:文字列):ユニット

}

 

オブジェクトあるHelloImplは、ハロー(「こんにちは」){延び

  (:文字列名)= {DEFのsayHelloをオーバーライド

    println(メッセージ+ "" +名)

  }

}

 

 

適用する方法を

 

//オブジェクトは、特定の方法で非常に重要であることです適用する方法を

// 通常コンパニオン・オブジェクトに実装適用オブジェクトクラス構造関連する機能を実現する方法を、かつ

// オブジェクトが作成され、クラスが関連付けられている場合、通常は使用しない新しいクラスの方法のが、使用クラス()暗黙的に関連付けられているオブジェクトをする必要があると呼ばれる方法で、適用対象をより簡潔に作成できるようになる方法を、

 

// 例えば、配列コンパニオン・オブジェクト・クラスが適用受信パラメータの可変数を達成し、作成する方法を配列オブジェクト関数を

ヴァル=配列(1、2、3、4、5)

 

// たとえば、あなた自身のコンパニオンクラスと関連付けられているオブジェクトを定義

クラスPerson(ヴァル名:文字列)

対象者{

  =新しい人(名前):デフ(文字列名)を適用

}

 

 

 

主な方法

// のようにJavaのプログラムを実行したい場合は、準備が含まれている必要があります主な同じクラスのメソッドを;にスカラ座、あなたがアプリケーションを実行したい場合は、存在しなければならない主な入口として、方法

//スカラメインメソッドは次のように定義されてDEFメイン(引数:配列[文字列]) およびで定義されなければならないオブジェクト

オブジェクトのHelloWorld {

  DEFメイン(引数:配列[文字列]){

    println( "Hello Worldの!!!")

  }

}

 

// 彼の実現に加えて、メインの方法を、あなたも継承できるアプリの形質を、あなたが必要とする、主要な直接として、メソッドを実行するコードをオブジェクトコンストラクタコード;として引数の着信パラメータを受け入れることができます

HelloWorldのアプリを{拡張するオブジェクト

  (args.length> 0)のprintln( "こんにちは、" +引数(0))の場合

  他のprintln( "Hello Worldの!!!")

}

 

// あなたは上記のコードを実行したい場合は、私たちは、配置する必要があり.scala 使用してファイルを、そしてscalac コンパイルした後、Scalaの実行を

 

scalac HelloWorld.scala

Scalaの-Dscala.timeのHelloWorld

 

//アプリの特徴は:のために働くのApp形質がから継承DelayedInit形質scalacの、コンパイルするコマンド受け継ぐのApp形質オブジェクトコンストラクタにコードをDelayedInit形質delayedInitを実行する方法

 

オブジェクトの列挙を達成するために、

 

// Scalaは直接に似て提供していないのJava のEnum あなたが列挙を達成する必要がある場合は、あなたが使用する必要があり、このような特性の列挙オブジェクト継承列挙クラスを、と呼ん列挙値を初期化する方法を

オブジェクト季節{列挙を拡張します

  ヴァル春、夏、秋、冬=値

}

 

//はまたできるの着信列挙値のID 名前をすることにより、ID のtoString 取得することができますあなたもすることができ、ID 名前を列挙値を見つけるために、

オブジェクト季節{列挙を拡張します

  ヴァルSPRING =値(0、 "春")

  ヴァルSUMMER =値(1、 "夏")

  ヴァルAUTUMN =値(2、 "秋")

  ヴァルWINTER =値(3、 "冬")

}

シーズン(0)

Season.withName( "春")

 

// 列挙object.valuesは、列挙値を通過することができます

println(彼) - (Season.values彼<)について

 

おすすめ

転載: www.cnblogs.com/YuanWeiBlogger/p/11432417.html