반응형
안녕하세요. 훈츠 입니다. 오늘은 오브젝트 object 에 대해 이야기 해 보겠습니다. 여러 인스턴스를 생성할 필요 없이 하나의 객체만으로 공통적인 속성과 함수를 사용해야 할때는 class 가 아닌 object로 선언하여 사용 할수 있습니다.
오브젝트 Object
- 클래스 대신 object 라는 키워드를 사용합니다.
- 생성자는 허용하지 않습니다.
- 싱글톤 패턴 : Singleton Pattern
싱글톤 패턴 : 클래스의 인스턴스를 단하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴
object Calculator{
fun add(a:Int,b:Int) = a + b
fun sub(a:Int,b:Int) = a - b
fun multiply(a:Int,b:Int) = a * b
fun divide(a:Int,b:Int) = a / b
}
fun main() {
var value= Calculator.add(3,5)
println(value)
}
Calculator 라는 오브젝트는 위와 같이 인스턴스 생성없이 한번 사용된 이후에는 프로그램이 종료되기 이전까지 코드 전체에서 공용으로 사용될수 있습니다.
Compainon object : 컴패니언 오브젝트
클래스 안에 만드는 공용 속성 및 함수를 이용해야 할때 사용 합니다. 기존 언어의 static 멤버와 비슷 합니다. 클래스 내부에서 별도의 영역에 고정적으로 존재하여 인스턴스를 생성하지 않아도 공용으로 사용가능한 속성이나 함수 입니다.
fun main() {
var cal= Comupter() //인스턴스 생성
cal.enter(3,4,"add") //다음과 같이 내부적으로 이용
cal.enter(4,3,"mul")
val result = Comupter.Calculator.add(8,4) // 외부적 이용도 가능
println(result)
}
//클래스 안에 Companion object
class Comupter(){
fun enter(a:Int,b:Int,cal:String){
var result = when(cal){
"add" -> add(a,b)
"sub" -> sub(a,b)
"mul" -> multiply(a,b)
"div" -> divide(a,b)
else -> "enter calculate"
}
println(result)
}
companion object Calculator{
fun add(a:Int,b:Int) = a + b
fun sub(a:Int,b:Int) = a - b
fun multiply(a:Int,b:Int) = a * b
fun divide(a:Int,b:Int) = a / b
}
}
'컴퓨터 언어 > 코틀린' 카테고리의 다른 글
[Kotlin] 코틀린 다형성의 개념과 사용방법 is, as 연산자 (0) | 2020.02.16 |
---|---|
[Kotlin] 코틀린 옵저버 패턴 리스너 (0) | 2020.02.15 |
[Kotlin] 코틀린 스코프 함수 [apply, also, run, let,] (0) | 2020.02.14 |
[Kotlin] 코틀린 고차 함수와 람다 함수 (0) | 2020.02.14 |
[Kotlin] 코틀린 변수 함수 클래스의 스코프 접근 제한자 (0) | 2020.02.14 |