- static 함수와 변수
- 싱글톤
- 익명 클래스
| - 자바의 static 변수와 함수를 만드려면, 코틀린에서는 companion object를 사용해야 한다. - companion object 도 하나의 객체로 취급되므로 이름을 붙일 수 있고 상속을 받을 수 있다. - Kotlin에서의 싱글톤은 object 키워드 하나면 된다. - 익명 클래스 구조는 (object : Type {})이다. |
1 . static 함수와 변수
① companion object : static 역할
private val MIN_AGE: Int = 1
class Person private constructor (
var name : String,
var age : Int,
) {
companion object {
fun newBaby(name: String): Person {
return Person(name, MIN_AGE)
}
}
}
↓ 『 companion object {} 』를 자바 코드로 변환
public static JavaPerson newBaby(String name) {
return new JavaPerson(name, MIN_AGE);
}
※ companion object? 클래스와 동행하는 유일한 오브젝트
- 자바의 static은 클래스가 인스턴스화 될 때 새로운 값이 복제되는게 아니라 정적으로 인스턴스끼리의 값을 공유한다.
② const vs val 변수
private val MIN_AGE = 1
private const MIN_AGE = 0
val 은 런타임시에 값이 할당되는 반면, const는 컴파일시에 변수가 할당된다.
③ companion object (동반객체)도 하나의 객체로 간주된다. 그러므로 이름할당, interface 구현이 가능하다.
// Log : interface
companion object Factory : Log {
fun newBaby(name: String): Person {
return Person(name, MIN_AGE)
}
override fun log() {
println("create companion Factory")
}
}
④ companion 객체에 유틸성 함수를 넣어도 되지만, 최상단 파일을 활용하는 것을 추천
⑤ companion 객체를 자바에서 사용하는 방법 : @JvmStatic 사용 (3번 항목)
1) companion 이름도 명시 안하고 @JVMStatic도 사용하지 않는 경우
| Kotlin | JAVA |
![]() |
![]() |
2) companion 이름 명시하는 경우 ▶ 자바에서 기본 이름이던 Companion 사용안
| Kotlin | JAVA |
![]() |
![]() |
3) @JVMStatic 을 선언하는 경우 ▶ 자바에서 정적메서드에 접근하는 것처럼 바로 호출 가
| Kotlin | JAVA |
![]() |
![]() |
2 . 싱글톤
※ 자바에서의 싱글톤
public class JavaSingletone {
private static final JavaSingletone instance = new JavaSingletone();
private JavaSingletone() {}
public static JavaSingletone getInstance() {
return instance;
}
}
※ 코틀린에서의 싱글톤 : 앞에 object만 붙여주면 된다.
object Singleton {
var a = 0
}
fun main() {
Singleton.a += 10
}
3 . 익명클래스
- (new Type {}) 의 자바문법을 코틀린에서는 (object : Type {})으로 사용
private interface Movable {
fun move()
fun fly()
}
private fun moveSth(movable: Movable) {
movable.move()
movable.fly()
}
fun main() {
moveSth(object : Movable {
override fun move() {
println("move")
}
override fun fly() {
println("fly")
}
})
}
※ (intellij) 코틀린 코드 자바로 변환
tool > Kotlin > Show Kotlin Bytecode
'Kotlin > Java to Kotlin Guide' 카테고리의 다른 글
| 코틀린에서의 OOP - 6. 다양한 클래스를 다루는 방법 (0) | 2025.10.07 |
|---|---|
| 코틀린에서의 OOP - 5. 중첩 클래스 (0) | 2025.10.07 |
| 코틀린에서의 OOP - 3. 접근 제어 (0) | 2025.10.07 |
| 코틀린에서의 OOP - 2. 상속 (0) | 2025.10.06 |
| 코틀린에서의 OOP - 1. 클래스 (0) | 2025.10.05 |





