scalaのオブジェクト
1121 ワード
Javaとは異なり、scalaにはobject構文があります.scalaにはstaticキーワードはありませんが、objectで同様の目的を実現できます.
これにより、単一のオブジェクトStudentが定義されます.1つのプログラムのmainメソッドはobjectでしか定義できません.
もう一つの文法糖は、mainメソッドを書かずにAppを直接継承します.
クラスがインスタンスメソッドを必要とし、静的メソッドも必要とする場合、クラスとobjectが同名であることを伴うオブジェクトによって実現できます.
オブジェクトにapplyメソッドを定義できます.次の式に遭遇すると、自動的に呼び出されます.
この呼び出し方式は呼び出しconstructorとは異なるが,形式は類似しており,区別しなければならない.
objectにより列挙も実現できる.
object Student {
private var num = 0
def uniqueNum = {num+=1;num}
}
println(Student.uniqueNum)
これにより、単一のオブジェクトStudentが定義されます.1つのプログラムのmainメソッドはobjectでしか定義できません.
object ScalaTest{
def main(args: Array[String]): Unit = {
println("Hello World!")
}
}
もう一つの文法糖は、mainメソッドを書かずにAppを直接継承します.
object ScalaTest extends App {
println("Hello World!")
}
クラスがインスタンスメソッドを必要とし、静的メソッドも必要とする場合、クラスとobjectが同名であることを伴うオブジェクトによって実現できます.
object Student {
private var num = 0
def uniqueNum:Int = {num+=1;num}
}
class Student {
private val id = Student.uniqueNum
@BeanProperty val score = 0
def getId:Int = id
}
オブジェクトにapplyメソッドを定義できます.次の式に遭遇すると、自動的に呼び出されます.
Object(arg1, arg2, ..., argn)
この呼び出し方式は呼び出しconstructorとは異なるが,形式は類似しており,区別しなければならない.
objectにより列挙も実現できる.
object Color extends Enumeration {
val RED, BLACK = Value
}
println(Color.BLACK)