본문 바로가기
언어/Kotlin

[Kotlin 문법 종합] - 접근제한자와 관련 용어 정리

by 젼젼39 2024. 3. 6.

 

1. 관련 용어 정리

1) 프로젝트 : 최상단 개념. 모듈, 패키지, 클래스를 포함함

2) 모듈 : 패키지, 클래스를 포함             //java, res 폴더 포함. app폴더

3) 패키지 : 클래스를 포함                      //java폴더 하위파일들을 포함. 클래스는 동일 페이지라고 생각하면 될듯

4) 접근 : 객체를 이용해 변수나 메소드를 호출할 수 있는지의 여부.

 

2. 접근제한자

    (+) 변수, 메소드 등의 데이터로의 무분별한 접근(.통해 접근하는거) 막고 유지보수에 용이

1) public : 어디서나 접근 가능. 명시하지 않았으면 기본적으로 public

2) protected : 기본적으로는 동일한 클래스 내에서만 + 상속 받은 경우 접근가능 (최상위(open)클래스에는 불가능, 프로퍼티에는 가능?)

3) internal : 같은 모듈 내에서만 접근 가능 (패키지, 클래스)                    // <-- java의 default와 비슷한듯

4) private : 동일한 클래스 내에서만 접근 가능

 

    *예시 (클래스)

class AccessTestClass {  		//class 앞에 접근제한자 사용가능한거겠지?
    public var a:Int = 1
    var b = 2
    private var c = 3
    internal var d = 4
    protected var e = 5
    
    public fun publicTest() {
        println("public 입니다")
    }

    fun publicTest2() {
        println("public 입니다")
    }

    private fun privateTest() {
        println("private 입니다")
    }

    internal fun internalTest() {
        println("internal 입니다")
    }

    protected fun protectedTest() {
        println("protected 입니다")
    }
}
class AccessTestChildClass: AccessTestClass() { 	//상속이라 AccessTestClass가 open이어야 함

    fun protectedTest1() {
        println("e의 값은 ${e}")
    }
}
fun main() {
    var accessTestClass = AccessTestClass()
    var accessTestChildClass = AccessTestChildClass()

// . 하고 접근가능한 요소를 확인
//    accessTestClass. 
    accessTestChildClass.protectedTest1()
}