코틀린/코틀린 문법

object

정혜현 2024. 8. 6. 14:24

객체 object

클래스를 정의하면서 인스턴스를 생성하는 키워드

선언 : object {}

 

선언식Object declaration

싱글톤Singleton패턴. 단일 인스턴스이므로 생성자 사용불가, 상속불가, 인스턴스 추가생성 불가

Thread-safe : 멀티 스레드 환경에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제가 없는 것

lazy initialization : Object 키워드가 선언된 클래스는 외부에서 객체가 사용되는 시점에 초기화

 

표현식

익명객체annonymous object. 호출할 때마다 새로운 인스턴스 생성

여러 메소드를 오버라이드해야되는 경우 권장되고 하나의 메소드일 경우 람다식이 효율적

리스너(object: 클래스() {} 형태로 많이 쓴다.

상속받은 클래스의 멤버함수를 구현하거나 오버라이드 가능

 

 

동반객체 companion object 

클래스에 속하는 객체

하나의 클래스 내 오직 하나의 companion object만 가능 object는 여러개 가능

외부에서 동반객체로 접근은 가능하나 동반객체에서 외부로 접근은 불가능

인터페이스, 상속 가능

동반객체가 속한 클래스가 사용될 때(load될 때) 초기화

최상위 함수, 객체선언

 

목적

클래스 내 싱글톤, 클래스에서 일부만 싱글톤으로 사용하고 싶을 때

클래스 내 상수를 정의할 때

인스턴스를 생성하지 않고 클래스에 접근할 때

팩토리패턴을 구현할 때

 

 

 

선언과 호출

선언 : companion object {}

default 객체명은 Companion이며 이름을 붙일 수도 있는데 Companion은 사용불가 

호출 :

클래스명 { companion object 동반객체명 {메소드} }

1. 클래스명.메소드() : 동반객체명 생략
2. 클래스명.동반객체명.메소드() : 모두 사용
3. 동반객체명.메소드() // 클래스명 생략

 

확장함수 사용시 클래스명.Companion을 꼭 명시해야 한다. 클래스명만 사용하면 클래스의 인스턴스에 대한 확장함수 생성

'코틀린 > 코틀린 문법' 카테고리의 다른 글

Textwatcher  (1) 2024.08.14
Repository  (0) 2024.08.13
코틀린문법 5주차 강의 [심화]  (0) 2024.06.12
코틀린문법 4주차 강의 [심화]  (0) 2024.06.10
코틀린문법 3주차 강의 [객체지향 프로그래밍]  (0) 2024.06.03