하이~~!! 오늘은 객체지향 언어를 공부하는 사람이라면 꼭 알아야할 내용인 캡슐화에 대해 공부해보려한다.
캡슐화없는 객체지향은 앙꼬 없는 찐빵이다. 갑자기 찐빵이 먹고싶다.
캡슐화
클래스에는 변수를 선언해서 사용할 수 있다고 했다.
그런데 만약 이 변수에 모든 사람들이 자유롭게 접근해서 수정할 수가 있다면? 이건 큰 위험요소이다.
그래서 우리는 이러한 변수룰 외부에서 직접 접근하는 것을 막고 (private) ,
메서드를 통해 변수의 값을 설정 (setter) 하거나 변수의 값을 리턴 (getter) 하게 해줘야한다.
이 과정을 바로 캡슐화라고 한다.
이렇게 말해놓으니깐 좀 어려운 것 같다. 아주 쉽게 설명한번 해주겠다.
내가 갑자기 감기에 걸렸다. 캡슐로 된 감기약을 먹었다. 우리는 이 감기약 안에 어떤 성분이 들었는지 알지 못한다. 하지만 이 약을 먹으면 감기가 낫는다는 것은 안다. 이게 바로 캡슐화의 핵심 개념이다. ㅎㅎ
이 정도 했으면 캡슐화를 충분히 이해했다고 생각하고 예제를 통해 공부해 보도록 하겠다.
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
31
32
33
34
35
|
fun main(args : Array<String>) {
var tempClass = EncapsulationTestClass()
tempClass.intValue = 100
println(tempClass.intValue)
tempClass.strValue = "IT 알려주는 은행원"
println(tempClass.strValue)
}
class EncapsulationTestClass {
// 외부의 접근을 막기위해 private 키워드를 꼭 사용해줘야함함
// private 를 사용할시 값을 꼭 초기화 시켜줘야함
private var memIntVar = 0
private var memStrVar = ""
var intValue : Int
set(memIntVar) {
this.memIntVar =memIntVar
}
/*
get() {
return this.memIntVar
}*/
get() = this.memIntVar
var strValue : String
set(memStrVar) {
this.memStrVar = memStrVar
}
get() {
return this.memStrVar
}
}
|
자바랑은 좀 다르다. 자바의 getter & setter는 실제 메서드를 호출하는 거였는데, 코틀린에서 getter & setter 는 마치 변수에 값을 할당하고 사용하는 것처럼 보인다. get() 같은 경우에는 사용하는 방식이 위에서 보여지는 것처럼 두 가지가 있다.
get() 이 단지 멤버변수를 리턴해주는 역할만 한다면 get() = this.memIntVar 이런 방식으로 사용하는 것도 좋은 생각이다.
위의 소스를 실행해보면 ..!
이런 결과가 나온다 ㅎㅎ
자 ! 오늘 getter & setter 까지 배웠으니 이제 코틀린 좀 사용할줄 안다고 말해도 될 것 같다.
그래도 열심히 복습하고 공부하는 걸 게을리 하지말자. 그럼 오늘도 즐거운 코딩하자 !
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 뽀개기 - 추상클래스 & 인터페이스 (1) | 2019.12.02 |
---|---|
[Kotlin] 코틀린 뽀개기 - 오버라이딩 (Overriding) (1) | 2019.12.01 |
[Kotlin] 코틀린 뽀개기 - 코틀린에서 상속(Inherit)을 사용해보자 (0) | 2019.12.01 |
[Kotlin] 코틀린 뽀개기 - 객체지향 언어인 코틀린! (3) | 2019.11.27 |
[Kotlin] Kotlin 기본 강의 (6) - 반복문 (0) | 2019.11.03 |
댓글