정적 멤버(Companion)

순순·2024년 3월 11일

코틀린

목록 보기
3/8

1. 정적멤버란?

💡 정적 멤버는 객체 생성 없이 바로 사용하는 요소이다. (java에서의 static과 동일)

(1) 특징

  • 변수인 경우에는 프로그램 전체에서 딱 하나만 만들어 사용하는 변수를 의미한다.
  • 정적 멤버는 객체 생성 없이 바로 사용하는 요소이다.
  • 하지만 딱하나만 생성되기 때문에 객체의 멤버로 취급되지 않는다.

(2) 호출방법

  • 클래스명.멤버이름
fun main(){

println("정적멤버변수 : ${TestClass1.a2}")

}

class TestClass1{
    // 일반 멤버변수(=프로퍼티)
    var a1:Int = 0

    // 정적 멤버변수
    companion object{
        // 정적 멤버변수
        // 프로퍼티는 반드시 초기화해야한다. (값을 새로 넣어줘야 한다)
        var a2:Int = 100

        fun testMethod2(){
            // 정적 멤버 메서드
            println("testMethod2의 a2 : $a2")
            // 정적 메서드에서 일반 멤버 프로퍼티를 사용하면 오류난다
            }
    }

(3) 정적멤버 → 일반멤버 사용은 불가

왜? 정적 멤버들은 프로그램이 시작할 때 이미 메모리에 올라가 있다. 그 후에 개발자가 만든 코드가 동작하기 때문.

  • 정적멤버 → 일반멤버 사용은 불가능
  • 일반멤버 → 정적멤버 사용은 가능

쉽게말해 정적멤버가 먼저 메모리에 올라간 뒤 일반멤버가 올라간다는 의미.

정적멤버가 메모리에 올라와서 주변을 돌아봤을 땐 아무도 없으며, 일반멤버가 메모리에 올라와서 주변을 돌아봤을 땐 이미 정적멤버가 와있는 상태. 타인이 있으니 도움을 청할 수 있다.


참고) kotlin unit

println 으로 값을 출력할 때, 가끔 'kotlin unit' 이라는 메세지가 뜨길래 궁금해서 찾아봄. 반환값이 없는 경우 뜨는 메세지였다. (=return 값)
println은 단순히 콘솔에 출력해주는 함수이지 반환값을 넘겨주는 함수는 아니다.
따라서 println을 사용할 때 반환값이 없는 메서드를 사용하면 해당 메세지가 뜬다.

profile
플러터와 안드로이드를 공부합니다

0개의 댓글