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
-------------------------------------------



Copyright © 2015 AchaPorutePiipo All Rights Reserved.