Top
>
Scala
> class , trait , object
コマンドプロンプトで試した結果です。
class ***
◆インスタンス生成
new *** or new ***()
◆引数付きコンストラクタ
class ***(name: String)
class Acha(name: String){
// 引数がnullの時の例外処理.
if (null == name) throw new Exception("null desse!")
}
trait ***
traitは、メソッドも定義することができます。
classでtraitを実装すると、そのメソッドが使用可能となります。
Javaのインターフェースとちょっと違います…
trait Porute{
def boo(): String
}
class Acha(name: String) extends Porute{
if (null == name) throw new Exception("null desse!")
override def boo(): String = "I study scala."
}
-------------------------------------------
scala> (new Acha("What's do you do?").boo)
res__: String = I study scala.
-------------------------------------------
trait Porute2{
def fuu(): Int
}
class Acha2(name: String) extends Porute with Porute2{
if (null == name) throw new Exception("null desse!")
override def boo(): String = "I study scala."
override def fuu(): Int = 2
}
-------------------------------------------
scala> (new Acha2("1+1=").fuu)
res__: Int = 2
-------------------------------------------
object ***
objectはパッケージのスコープ内で宣言できる。
アクセスした時にインスタンスが生成される。
staticが存在しないscalaにおいて、objectがそれに代わる。
classのインスタンスなので、メソッドの引数としても使用可能
class,traitを継承も可能。…Rubyみたいに何でもありみたいな印象
object Piipo extends Acha2{
override def fuu(): Int = 4
def woo(): String = "BooFuuWoo"
}
-------------------------------------------
scala> Piipo.boo
res__: String = I study scala.
scala> Piipo.fuu
res__: Int = 4
scala> Piipo.woo
res__: String = BooFuuWoo
-------------------------------------------