오브젝트

고성욱·2023년 3월 20일
0

안드로이드

목록 보기
15/26

오브젝트란?

오브젝트는 클래스의 인스턴스를 만들어 내지 않고, 고유한 인스턴스를 바로 생성하는 것이 가능한 싱글톤 패턴의 구현 방법 중 하나입니다. 코틀린에서는 object 키워드를 사용하여 오브젝트를 생성할 수 있습니다. 이를 사용하면 인스턴스를 생성하기 위한 보일러플레이트 코드를 줄일 수 있으며, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

  • 자바에서는 static과 같은 역활
  • 예시 코드
object Pig{
	var name: String = "Pinky"
		fun printName(){
			Log.d("class", "Pig의 이름은 ${name}입니다.")
		}
}
  • 오브젝트 코드 블록 안의 프로퍼티와 베서드는 클래스명에 도트 연산자를 붙여서 생성자 없이 직접 호출 가능합니다.
  • 주의 할 점은 클래스명을 그대로 사용하기 때문에 호출하는 클래스명의 첫글자가 대문자 입니다.
  • object는 클래스와 다르게 앱 전체에 1개만 생성됩니다.

컴패니언 오브젝트

컴패니언 오브젝트는 클래스 내부에 선언되는 오브젝트로, 클래스의 인스턴스와는 별개로 생성되며 해당 클래스와 관련된 유틸리티 메서드나 프로퍼티를 담을 수 있습니다. 컴패니언 오브젝트를 선언하면 해당 클래스의 이름으로 접근할 수 있는 "정적" 멤버 변수나 메서드를 선언할 수 있습니다. 코틀린에서는 companion object 키워드를 사용하여 컴패니언 오브젝트를 생성할 수 있습니다.

  • 컴패니언 오브젝트의 멤버 변수와 메서드는 클래스명을 사용하여 직접 호출할 수 있습니다.
  • 컴패니언 오브젝트 내부에서 선언된 멤버 변수와 메서드는 private으로 선언되어 있는 멤버 변수와 메서드를 사용할 수 있습니다.
  • 컴패니언 오브젝트는 클래스와 마찬가지로 생성자를 가질 수 있습니다.
  • 클래스 내부에는 하나의 컴패니언 오브젝트만 선언할 수 있습니다.
  • 예시 코드
class MyClass {
    companion object {
        *val myProperty = "Hello, World!"
        fun myMethod() {
            println("This is a companion object method.")
        }*
    }
}

MyClass.*myProperty = "Hi"*
MyClass.*myMethod() -> "This is a companion object method."*

위 코드에서 MyClass.myPropertyMyClass.myMethod()를 이용하여 컴패니언 오브젝트의 멤버에 접근할 수 있습니다.

profile
안드로이드, 파이썬 개발자

0개의 댓글