728x90
Companion Object
- 코틀린에서는 static 키워드를 사용할 수 없는 대신, 정적 변수를 선언할 수 있도록 Companion Object를 제공한다.
- companion object { 정적으로 선언할 변수, 함수들 }
class P{
companion object{
var age : Int = 10 //정적 변수
fun printAge() //정적 함수
{
println(age)
}
}
}
fun main() {
P.printAge()
}
object와 싱글톤
- object로 선언된 객체는 프로퍼티, 메서드에 객체 생성 없이 접근이 가능하다.
- 단일 인스턴스를 생성하기 때문에 싱글톤 패턴을 구현하는데 사용된다.
- 주 생성자, 부 생성자를 사용할 수 없다. (대신 init은 사용가능)
object P{
var name = "park"
init {
}
}
fun main() {
println(P.name)
}
object 표현식
- 익명 내부 클래스 형태를 만들 수 있다.
- 하위 클래스를 따로 선언하지 않고 클래스의 메서드를 오버라이딩 할 수 있다.
- object 선언과 달리 싱글톤은 아니다.
open class P{
var name = "park"
open fun printName() = println(name)
}
fun main() {
var p1 = P()
var p2 = object : P(){
override fun printName() {
println("수정 출력 $name")
}
}
var p3 = object { //상위 클래스, 인터페이스 없는 경우
var name = "kim"
fun printName(){
println("상위 클래스 없음 $name")
}
}
p1.printName()
p2.printName()
p3.printName()
/* 결과
park
수정 출력 park
상위 클래스 없음 kim
*/
}
728x90
'Kotlin' 카테고리의 다른 글
[코틀린] 실드 클래스 (Sealed Class) (0) | 2020.09.22 |
---|---|
[코틀린] 데이터 클래스 (0) | 2020.09.21 |
[코틀린] 위임 (Delegation) (0) | 2020.09.19 |
[코틀린] 프로퍼티의 오버라이딩 (0) | 2020.09.19 |
[코틀린] 주 생성자 (0) | 2020.09.19 |
댓글