본문 바로가기

Language/Kotlin

[Kotlin] 동반 객체(Companion Object)

📝 학습목표 : Companion Object를 활용하여 객체를 생성해보자.

 

 

 

 

 

Companion Object

코틀린은 자바의 static과 비슷한 역할을 하는 Companion Object(동반 객체)를 제공한다. Companion Object는 클래스 내부에 선언된 특별한 객체이다. 정적인 메서드나 변수를 선언하고 객체를 생성하는 기능을 구현할 수 있다.

 

 

 

companion object를 사용하여 동반 객체를 정의하고 그 내부에 create() 메서드를 작성했다. 이 메서드는 새로운 Book 객체를 생성하고 반환한다. 따라서 book 변수는 새로운 Book 인스턴스를 참조하게 된다.

Book.Companion.create()를 Book.create()로 생략 가능

 

 

 

 

프로퍼티 역시 써줄 수 있다.

 

 

 

 

Companion Object는 인터페이스를 구현하거나 다른 클래스를 상속받을 수 있다.

 

 IdProvider 인터페이스로 getId()라는 메서드를 정의한다.

인터페이스(Interface): 다른 클래스에 구현되어야 하는 메서드들의 집합을 정의할 때 사용한다. 클래스가 특정한 동작을 실행하기 위해 반드시 구현해야 하는 메서드들을 명시하는 역할을 하는 것이다.

 

 

 getId() 메서드를 오버라이드하여 구현한다.

오버라이드(override): 상속 관계에서 사용되는데 부모 클래스나 인터페이스에 이미 정의된 메서드를 자식 클래스나 구현 클래스에서 다시 재정의하여 자식 클래스의 동작을 지정할 수 있게 한다.

오버라이드에 대한 설명은 2024.03.07 - [Language/Kotlin] - [Kotlin] Class 사용법 (+오버라이딩)에 정리되어 있다.

 

 

✔ BookFactory 동반 객체의 create() 메서드를 호출하여 Book 객체를 생성하고 getId() 메서드를 호출하여 책의 id를 가져온다.

동반 객체가 클래스 내부의 정적 메서드를 클래스 외부에서 쉽게 접근할 수 있음을 확인할 수 있다.

 

 

 

 

참고 자료⎜https://www.youtube.com/watch?v=IDVnZPjRCYg