반응형
Object를 다루는 방법
static 함수와 변수
Java
public class JavaPerson {
private static final int MIN_AGE = 1;
public static JavaPerson newBaby(String name) {
return new JavaPerson(name, MIN_AGE);
}
private String name;
private int age;
private JavaPerson(String name, int age) {
this.name = name;
this.age = age;
}
}
Kotlin
class Person private constructor(var name: String, var age: Int) {
companion object Factory : Log {
private const val MIN_AGE = 1
fun newBaby(name: String): Person {
return Person(name, MIN_AGE)
}
override fun log() {
println("나는 person 클래스의 동행 객체입니다.")
}
}
}
- 코틀린은 자바의
static
대신compaion object
를 사용한다.static
: 클래스가 인스턴스화 될 때 새로운 값이 복제되는게 아니라 정적으로 인스턴스끼리의 값을 공유companion object
: 클래스와 동행하는 유일한 오프젝트
const
의 유무:const
를 사용하게 되면 컴파일시에 변수가 할당된다.- 진짜 상수에 붙이기 위한 용도이다.
- 기본타입과 String에만 사용할 수 있다.
companion object
(동반객체)도 하나의 객체로 간주된다.- 때문에 이름을 붙잉ㄹ 수도 있고, interface를 구현할 수도 있다.
companion object
에 유틸성 함수를 넣어도 되지만, 최상단 파일에 작성해 사용하는것을 추천한다.- 자바에서 코틀린의 companion object를 사용하고 싶다면?
- 이름이 없다면
타입.Companion.이름
- 이름이 있다면
타입.CompaionObject이름.이름
- 사용할 변수 또는 함수에
@JvmStatic
을 작성한 후타입.이름
- 이름이 없다면
싱글톤
Java
public class JavaSingleton {
private static final JavaSingleton INSTANCE = new JavaSingleton();
private JavaSingleton() { }
public static JavaSingleton getInstance() {
return INSTANCE;
}
}
Kotlin
object Singleton {
var a: Int = 0
}
- 코틀린에서 싱글톤은 정말 간단하게도 object 키워드만 붙여주면 끝난다.
익명 클래스
Kotlin
fun main() {
moveSomething(object : Moveable {
override fun move() {
println("move")
}
override fun fly() {
println("fly")
}
})
}
private fun moveSomething(moveable: Moveable) {
moveable.move()
moveable.fly()
}
- 자바에서 익명 클래스는 특정 인터페이스나 클래스를 상속받은 구현체를 일회성으로 사용할 때 쓰는 클래스이다.
- 자바에서는
new 타입이름()
으로 사용하지만 - 코틀린에서는
object : 타입이름
으로 사용한다.
반응형
'Java & Kotlin > Kotlin' 카테고리의 다른 글
[Kotlin] 배열과 컬렉션 (0) | 2022.07.07 |
---|---|
[Kotlin] Data, Enum, Sealed 클래스 (0) | 2022.07.06 |
[Kotlin] 중첩 클래스를 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 접근제어를 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 상속을 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 클래스를 다루는 방법 (0) | 2022.07.06 |