욱'S 노트

Scala - 클래스 본문

Programming/Scala

Scala - 클래스

devsun 2016. 11. 1. 14:15

클래스는 객체를 생성하기 위한 정적인 템플릿이다.

class Point (var x : Int, var y : Int) {
def move(dx : Int, dy : Int): Unit = {
x = x + dx
y = y + dy
}

override def toString : String =
"(" + x + "," + y + ")"
}

스칼라에서 클래스는 생성자 인자로 파라미터를 전달할 수 있다. 위 코드는 두개의 인자를 가진 생성자를 정의를 하고 있다. x 와 y는 클래스의 어디서든 접근을 할 수 있다.

클래스는 또란 두개의 메소드를 포함하고 있는데 move 와 toString이다. move는 두개의 정수를 전달받아 x와 y값을 변경하고 리턴은 없다. 여기서 Unit이라는 키워드가 보이는데 자바와 같은 언어의 void와 동일하다. toStirng 아무런 파라미터를 전달받지 않지만 String 값을 리턴한다는 것을 알 수 있다. toString인 기정의되어 있기때문에 오버라이딩을 해야하며 이때 override라는 키워드를 사용한다.

스칼라에서는 값을 리턴하기 위해 return을 명시할 필요가 없다. 단순히 메소드 몸체의 마지막 값이 자동으로 리턴된다. 

object Classes {
def main(args: Array[String]): Unit = {
val point = new Point(1,2);
println(point)
point.move(10,10);
println(point)
}
}

프로그램을 실행해보기 위해 main 메소드를 가진 싱글턴 오브젝트를 만들었다. 메인 메소드에서는 새로운 Point 객체를 생성하고 그 값을 point 변수에 지정하였다. val과 이전에 생성자에서 사용했던 var의 차이점을 확실히 알아야 한다. val은 value를 뜻하며 상수이다. 이에 다시 다른 객체를 할당할 수 없다. var는 variable을 뜻하며 변수이다.

(1,2)

(11,12)


출처 : http://docs.scala-lang.org/tutorials/tour/classes

'Programming > Scala' 카테고리의 다른 글

Scala - 익명 함수  (0) 2016.11.02
Scala - 믹스인 클래스 컴포지션  (0) 2016.11.01
Scala - 트래잇  (0) 2016.11.01
Scala - 통합 타입  (0) 2016.11.01
Scala - 소개  (0) 2016.10.21
Comments