티스토리 뷰
방송통신대학교 기말 시험 준비로 포스팅을 하지 못했는데, 3학년 1학기가 종강된 기념으로 오랜만에 글을 작성한다.
이번 포스팅에서는 코틀린에서 object 키워드를 다루는 방법에 대해서 알아보자!
1. static 함수와 변수
2. 싱글톤
3. 익명 클래스
static 함수와 변수
Java
public class PersonJava {
private static final int MIN_AGE = 1;
public static PersonJava newPerson(String name) {
return new PersonJava(name, MIN_AGE);
}
private String name;
private int age;
private PersonJava(String name, int age) {
this.name = name;
this.age = age;
}
}
Kotlin
class PersonKo private constructor(
var name: String,
var age: Int,
) {
companion object {
val MIN_AGE = 1
fun newPerson(name: String): PersonKo {
return PersonKo(name, MIN_AGE)
}
}
}
코틀린에서는 자바의 static
대신에 companion object
를 사용한다.companion object
는 하나의 객체로 간주되기 때문에, 이름을 붙일 수도 있고, interface
를 구현할 수도 있다.
companion object Factory {
private const val MIN_AGE = 1
fun newPerson(name: String): PersonKo {
return PersonKo(name, MIN_AGE)
}
}
만약 자바에서 코틀린의 companion object
를 사용해야 한다면, @JvmStatic
을 이용하면 된다.
companion object Factory {
private const val MIN_AGE = 1
@JvmStatic
fun newPerson(name: String): PersonKo {
return PersonKo(name, MIN_AGE)
}
}
public class Main {
public static void main(String[] args) {
PersonKo seonghyunKim = PersonKo.newPerson("김성현");
System.out.println("name=" + seonghyunKim.getName());
}
}
싱글톤
Java
public class SingletonJa {
private static final SingletonJa INSTANCE = new SingletonJa();
private SingletonJa() {}
public static SingletonJa getInstance() {
return INSTANCE;
}
}
Kotlin
object SingletonKo {}
코틀린에서의 싱글톤은 object SingletonKo(클래스 이름)
이 전부이다.
자바와 비교했을 때, 상당히 간결하게 작성할 수 있다는 것을 확인할 수 있다.
익명 클래스
익명 클래스란, 특정 인터페이스나 클래스를 상속받은 구현체를 일회성으로 사용할 때 쓰는 클래스를 말한다.
Java
public static void main(String[] args) {
moveSomething(new Movable() {
@Override
public void move() {
System.out.println("뚜벅뚜벅..");
}
@Override
public void fly() {
System.out.println("파닥파닥~");
}
});
}
public interface Movable {
void move();
void fly();
}
private static void moveSomething(Movable movable) {
movable.move();
movable.fly();
}
Kotlin
fun main() {
moveSomething(object : Movable {
override fun move() {
println("뚜벅뚜벅..")
}
override fun fly() {
println("파닥파닥~")
}
})
}
private fun moveSomething(movable: Movable) {
movable.move()
movable.fly()
}
자바에서는 new 타입이름()
을 사용했다면, 코틀린에서는 object : 타입이름
을 사용하여 익명 클래스를 다룬다.
정리
- Java의
static
변수 및 함수를 만드려면, Kotlin의companion object
를 사용하자. companion object
도 하나의 객체로 간주되기 때문에, 이름을 붙일 수 있고, 다른 타입을 상속받을 수도 있다.- Kotlin에서 싱글톤 클래스를 만들 때,
object
키워드를 사용한다. - Kotlin에서 익명 클래스를 만들 때,
object : 타입
을 사용한다.
'Kotlin' 카테고리의 다른 글
[Kotlin] Collection (0) | 2022.06.19 |
---|---|
[Kotlin] 클래스 (0) | 2022.06.17 |
[Kotlin] 접근 제한자(Visibility Modifier) (0) | 2022.06.07 |
[Kotlin] 예외를 처리하는 방법 (0) | 2022.06.02 |
[Kotlin] 반복문 (0) | 2022.06.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링 부트
- Spring
- 데이터베이스
- 스프링
- 백준
- 구현
- leetcode
- webflux
- 정렬
- 인프런
- Algorithm
- 파이썬
- MySQL
- 코테
- 코틀린
- kotlin
- 북클럽
- 리팩토링
- 자료구조
- Real MySQL
- spring boot
- 노마드코더
- 릿코드
- 스프링부트
- 노마드
- 문자열
- mysql 8.0
- 김영한
- 그리디
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함