1. static 함수와 변수
class Person private constructor(
var name : String,
var age : Int,
){
//static이 존재하지 않는다.
//이는 Factory처럼 이름을 지어줄 수도 있고, 인터페이스를 구현해 줄 수도 있음
companion object Factory { //클래스와 동행하는 유일한 오브젝트라는 의미
//자바에서와의 static 변수와 함수처럼 활용된다.
/*
정적으로 인스턴스끼리의 값을 공유
클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라,
*/
private const val MIN_AGE = 1
//const 를 붙이면 컴파일 시에 변수가 할당된다.
//런타임때 할당되는 것이 아니라,
//진짜 상수에 붙이기 위한 용도.
//기본 타입과 String에만 붙일 수 있음
fun newBaby(name : String) : Person{
return Person(name, MIN_AGE)
}
}
}
먼저, 자바에서는 static으로 선언하여 클래스, 정적으로 인스턴스끼리의 값을 공유했다.
하지만 코틀린에서는 static이라는 키워드가 존재하지 않는다.
위의 코드처럼 companion object라는 키워드가 존재한다.
이는 static변수와 함수처럼 활용되며, 클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라,
정적으로 인스턴스의 값을 공유한다!!
또한, const를 붙이면 컴파일 시에 변수가 할당된다.
진짜 상수에 붙이기 위한 용도이며, 기본타입과 String에만 붙일 수 있다!!
위의 생성자가 private이기 때문에 아래처럼 접근이 가능하다!
val person = Person.newBaby("ee")
person.name
person.age
2. 싱글톤
싱글톤이란 단 하나의 인스턴스만을 갖는 클래스이다.
자바에서 싱글톤을 구현할 때 조금 복잡한 부분이 있었지만 코틀린에서는 아래와 같이 간단히 구현가능하다.
object Singleton{
var a : Int = 0
}
애당초 단 하나의 인스턴스이기 때문에 인스턴스화를 하는게 아니라, 다음과 같이
코드에서 .a .함수 이런식으로 접근이 가능하다!
Singleton.a //이런식으로 접근
Singleton.a += 10
3. 익명클래스
특정 인터페이스나 클래스를 상속받은 구현체를 일회성으로 사용할 때 쓰는 클래스이다.
다음과 같이 자바처럼 new Movable 하는 것이 아니라, object : Movable 이렇게 구현한다.
위의 처럼 object : 타입으로 작성해주어 override해서 사용한다!
'Kotlin > Basic' 카테고리의 다른 글
[Kotlin/Basic] 코틀린에서의 배열과 컬렉션 (0) | 2022.09.06 |
---|---|
[Kotlin/Basic] 코틀린에서의 중첩클래스 (0) | 2022.09.01 |
[Kotlin/Basic] 코틀린에서의 접근제어 (0) | 2022.08.23 |
[Kotlin/Basic] 코틀린에서의 상속 (0) | 2022.08.22 |
[Kotlin/Basic] 코틀린에서의 클래스 (0) | 2022.08.15 |