하이하이 !!! 오늘은 object라는 키워드를 완벽하게 정리해보려고 한다.
사실 이전에 우리가 object를 쓴 적이 있다. 그런데... 혹시 기억안나는 사람 손!
오 없네~~~ ㅎㅎㅎ 부끄러워서 손 안드신분은 이거 보고 오자.
https://devkingdom.tistory.com/59?category=816253
우리는 분명히 분명히 !! 익명 중첩 클래스를 만들때 object를 사용하는 걸 배웠었다. 오늘은 저번에 썼던 저 object에 대해 공부해 볼것이다.
object 란?
이 키워드는 따로 이름이 존재하지 않는 객체를 의미한다고 생각하면 된다. object를 사용하면 따로 클래스 없이 객체를 생성할 수 있다. 아래 예제를 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
fun main(args: Array<String>) {
var obj1 = object {
var temp1 = "hi"
var temp2 = 7
var temp3 = 1.1
fun objectMethod() {
print("object method")
}
}
println(obj1.temp1)
println(obj1.temp2)
println(obj1.temp3)
obj1.objectMethod()
}
|
자 보면 obj1 이라는 객체에 object라는 키워드를 이용해서 마치 클래스를 선언하듯이 마술같이 객체를 만드는 것을 볼 수 있다. ㅎㅎㅎ
추상클래스나 인터페이스에서의 object 활용
우리가 익명 중첩클래스를 공부 했을 때, 익명 중첩 클래스를 사용하면 추상클래스나 인터페이스에 정의된 메서드를 오버라이딩 해서 사용하려고 할때 상속받은 클래스를 따로 안 만들고 사용 할 수 있다고 공부했었다. 이제 아래 예제를 보면 좀 더 이말이 와닿을 거라 생각한다.
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
|
fun main(args : Array<String>) {
var temp1 = object : AbstaractClass() {
override fun abstractMethod() {
println("abstarct method 구현")
}
}
var temp2 = object : Interface {
override fun interfaceMethod() {
println("interface method 구현")
}
}
temp1.abstractMethod()
temp2.interfaceMethod()
}
abstract class AbstaractClass {
abstract fun abstractMethod()
}
interface Interface {
fun interfaceMethod ()
}
|
위의 코드를 보면 추상클래스나 인터페이스를 따로 생성하지 않고 바로 객체로 만드는 것을 볼 수 있다. ㅎㅎ 이전에 배웠던 익명 중첩클래스는 파라미터에 저 object 객체를 넣어준 것이다. ㅎㅎ 이제 이해 되지?
static 처럼 사용하는 object
object의 는 java의 static 과 비슷한 개념이라 할 수 있다. object 키워드로 객체를 만들면 객체의 이름으로 바로 멤버나 메서드에 접근할 수 있다. 아래 코드를 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
fun main(args : Array<String>) {
println(Object.var1)
Object.method1()
}
object Object {
var var1 = "변수"
fun method1() {
println("메서드")
}
}
|
딱 봐도 !! Java 의 static 같지 않은가 ㅎㅎ
object 키워드로 Factory method 만들기
object 키워드를 이용하면 팩토리 메서드도 만들 수 있다. 아 팩토리 메서드란, 메서드 에서 객체를 생성해서 리턴하는 걸 의미한다. ㅎㅎ 잘 모르겠으면 구글링해서 팩토리 메서드에 대해 공부좀 해보길 권한다.
1
2
3
4
5
6
7
8
9
10
11
|
fun main(args: Array<String>) {
var temp = FactroyClass.create()
}
class FactroyClass {
companion object {
fun create() : FactroyClass {
return FactroyClass()
}
}
}
|
아 팩토리 메서드를 구현할 때는 companion 이라는 키워드가 필요하니 꼭 명심하도록하자 !
오늘은 object에 대해 알아보았다. 궁금한 점 있으면 댓글로 말해주라 ! 그럼 모두들 즐거운 코딩하자 !
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 뽀개기 - 컬렉션을 이용해 자료구조 활용하기 (0) | 2019.12.14 |
---|---|
[Kotlin] 코틀린 뽀개기 - 배열 사용하기 (1) | 2019.12.12 |
[Kotlin] 코틀린 뽀개기 - Enum 활용하기 (0) | 2019.12.08 |
[Kotlin] 코틀린 뽀개기 - 중첩 클래스 (Nested Class) 사용하기 (0) | 2019.12.07 |
[Kotlin] 코틀린 뽀개기 - Generic 사용하기 (0) | 2019.12.06 |
댓글