standard class
constructor
primary constructor
scala는 java와 달리 class 이름 옆에 parameter를 명시함으로써 primary constructor를 정의한다.
auxilary constructor
추가적인 constructor는 this를 이용해서 아래와 같이 정의한다.
class Person(first_name:String, last_name:String){
var age = -1
def this(first_name, last_name:String, age:Int) {
this(first_name, last_name)this.age = age
}
}
private constructor : private 생성자
class Person private(name: String ){ ... }
default value : 기본값 지정
class Person private(name: String = "hello" ){ ... }
extends를 이용할 때 어떤 생성자를 이용할지 명시할 수 있다.
class Employee(name:String) extends Person (name: String){ ... }
instance 생성(new)
new를 통해 생성한다.
parameter가 없는 생성자인 경우, ()를 생략할 수 있다.
function의 경우에도 parameter가 없는 경우 ()를 생략할 수 있다.
class AA {
var vv = 0
def kk = println("without ()")
def kk2() = println("with ()")
}
object O {
def main(args: Array[String]):Unit = {
val a = new AA
val b = new AA()
println("a", a)
println("b", b)
//실행 결과
//(a,AA@7112f2df)
//(b,AA@f8ec7ed)
a.kk
b.kk() // compile error
실행 결과
//without ()
a.kk2
b.kk2()
실행 결과
//with ()
//with ()
}
}
'언어 > Scala' 카테고리의 다른 글
Scala abstract class vs. trait, singleton, case class (0) | 2020.02.13 |
---|---|
Reactive Programming, Functional programming, Reactive Principles (0) | 2020.02.08 |
for {...} yield 실험 결과 정리 (0) | 2020.02.03 |
scala for comprehension, for {...} yield (0) | 2020.02.03 |
type / class 확인하기 (0) | 2020.01.26 |