코틀린 & Java

[Kotlin] Object Class란?

코딩하는후운 2022. 10. 25. 11:24
반응형

Object Class란?

코틀린에는 static keyword가 없기 때문에 
java의 static 개념을 코틀린에서 어떻게 표현해야 하는지 살펴보겠습니다.

-싱글턴을 정의하는 방법
-동반객체 companion object를 이용한 팩토리 메서드 구현
-무명클래스(익명 클래스)의 선언

위 세가지를 object란 keyword를 이용해서 표현.

싱글턴(Singleton)

코틀린에서는 object를 이용하여 클래스를 정의함과 동시에 객체를 생성할 수 있습니다.

object Payroll{
    val allEmployes = arrayListOf()
    fun calculateSalary(){
    }
}


object로 선언하면 클래스 선언과 동시에 객체가 생성됩니다.

Payroll.allEmployes.add(Person("홍길동", "김말똥")
Payroll.calculateSalary()



companion object

클래스의 인스턴스와 상관없이 호출해야 하지만 class의 내부 정보에 접근할수 있는 함수가 필요할때
companion object를 class내부에 선언합니다.
companion object는 외부 클래스의 private property에도 접근이 가능하기에,
factory method를 만들때 적합합니다.

class User private constructor(val nickname: String){
	companion object{
		fun newSubscribingUser(email: String)=
			User(email.substringBefore('@'))
	}
}

fun main(args: Array<String>){
	val subscribingUser = User.newSubscribingUser("bob@gmail.com")	
}



user는 private constructor를 가지기 때문에 외부에서 생성할 수 없습니다.
따라서 외부에서는 companion으로 제공되는 factory method를 이용해서만 객체를 생성할 수 있도록 제한할 수 있습니다.


companion object는 클래스 내부에 정의된 일반 객체입니다.
-companion object에 이름 명명
-companion object 내부에 확장 함수나 property 정의
-인터페이스 상속


반응형

'코틀린 & Java' 카테고리의 다른 글

[kotlin] mapTo  (0) 2023.05.18
[Kotlin] Open Class란?  (0) 2022.10.25
[Kotlin] Data Class란?  (0) 2022.10.25
[Android] Looper에 대해 알아보자  (0) 2022.10.24
[Android] Java Stream에 대해 알아보자  (0) 2022.10.24