Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- intellij
- Angular2
- Java
- design pattern
- Spring Batch
- Spring Boot
- Hbase
- hibernate
- Storm
- Linux
- scala
- 스프링 배치
- docker
- Clean Code
- Spring
- elastic search
- hadoop
- 제주
- Domain Driven Design
- elasticsearch
- Gradle
- apache storm
- 도메인주도설계
- SBT
- 엘라스틱서치
- Spring XD
- spark
- DDD
- hdfs
- nginx
Archives
- Today
- Total
욱'S 노트
Scala - 클래스 본문
클래스는 객체를 생성하기 위한 정적인 템플릿이다.
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