반응형
가장 단순한 클래스 정의는 예약어 class 와 식별자만 있는 것
class User
val user1 = new User
C++와 같게 new 는 클래스의 인스턴스를 만들기위해 사용됨
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 =
s"($x, $y)"
}
val point1 = new Point(2, 3)
point1.x # 2
println(point1) // (2, 3)
생성자
class 가 생성될때 생성자는 기본 값을 제공하고, 선택적으로 매개변수를 가질수가 있음
class Point(var x: Int = 0, var y: Int = 0)
val origin = new Point # 기본적으로 x, y 값이 0으로 세팅
val point1 = new Point(1) # 바로 값을 넣을경우 왼쪽에 있는 변수에 값이 저장됨 즉 x에 1이 저장
println(point1.x) # 1
# 만일 x는 건들지않고 y값만 바꾸고싶을땐 지정을 해줘야함
val point2 = new Point(y=2)
println(point2.y) # 2
Private 멤버
c++ class를 배우게되면 private 변수가 있는데 scala도 동일하게 존재한다
class Point {
private var _x = 0
private var _y = 0
private val bound = 100
def x = _x
def x_ = (newValue: Int): Unit = { # Unit 은 void와 유사하다고 생각
if (newValue < bound) _x = newValue else printWarning
}
def y = _y
def y_ = (newValue: Int): Unit = {
if (newValue < bound) _y = newValue else printWarning
}
private def printWarning = println("WARNING: Out Of Bounds")
}
val point1 = new Point
point1.x = 99
point1.y = 101 // WARNING: Out Of Bounds
반응형
'Data > Data Engineering' 카테고리의 다른 글
[Scala] Scala 언어 기초공부 - 중첩for문 (0) | 2020.12.14 |
---|---|
[예제 따라하기] /usr/sbin/td-agent-gem 에러 (0) | 2020.10.05 |
[Scala] Scala 언어 기초공부(3) - 변수 타입 (0) | 2020.03.03 |
[Scala] Scala 언어 기초공부(2) (0) | 2020.03.02 |
[Scala] Scala 언어 기초공부(1) (0) | 2020.02.26 |