-
[Kotlin] CompanionKotlin 2022. 9. 14. 15:48
자바에서 static으로 사용되던 키워드가 companion이라는 키워도로 바꿔서 사용됨.
다만 static은 각 변수나 메서드에 각각 붙여서 사용하지만 companion은 영역을 만들고 그 안에 정적 멤버로 사용할 변수나 메서드를 다 넣음.
fun main(){ // 인스턴스 멤버변수 또는 인스턴스 멤버 메서드의 가장 큰 특징은 // 객체가 생성되지 않으면, 사용할수가 없음 val obj1 = TestClass() println("obj1.a1 : ${obj1.a1}") obj1.testFun1() obj1.a1 = 200 println("obj1.a1 : ${obj1.a1}") // companion 영역에 선언된 멤버들은 객체 생성없이, '클래스 이름과 함께 바로 사용'이 가능 println("TestClass.a2 : ${TestClass.a2}") TestClass.testFun2() } class TestClass { var a1 = 100 // 인스턴스 멤버 변수 companion object { // 정적(static) 멤버들이 정의 되는 영역 var a2 = 1000 // 정적(static) 멤버 변수 fun testFun2() { // 정적(static) 멤버 매서드 println("testFun2") // println ("a1 : $a1") // error // 인스턴트 멤버는 companion 메서드에 접근할 수 없음 println("a2 : $a2") // 정적 멤버 메서들에서는 정적 멤버 변수의 접근이 자유로움 } } fun testFun1(){ // 인스턴스 멤버 메서드 println("testFun1") println("a1 : $a1") println("a2 : $a2")// 인스턴스 메서드는 객체유무와 상관없이 언제든 사용이 가능 testFun2() } }
'Kotlin' 카테고리의 다른 글
[Kotlin] List (0) 2022.09.14 [Kotlin] TypeCasting (0) 2022.09.14 [Kotlin] Interface (0) 2022.09.14 [Kotlin] Abstract (0) 2022.09.14 [Kotlin] this, super (0) 2022.09.14