관리자

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 ()
    
    }
}

 

+ Recent posts