[Kotlin] open, internal

jeunguri·2022년 11월 28일
0

kotlin

목록 보기
4/5

open

자바에서는 클래스에 final이 붙지 않으면 다른 클래스에서 상속이 가능하다.
하지만 코틀린에서의 클래스와 메서드는 기본적으로 final이다.
따라서 다른 클래스의 상속을 허용하려면 그 클래스 앞에 open 키워드를 붙여야 한다. 또한, override를 허용하고 싶은 메서드나 프로퍼티 앞에도 open 키워드를 붙여야 한다.

open class Person {
	
    // age 메서드는 하위 클래스에서 override 불가능
    fun age(): Int {
    	return 30
    }
    
    // 하위 클래스에서 override 가능
    open fun name(): String {
    	return "Hong Gildong"
    }
}

class Friend() : Person() {
	
    // age 메서드는 override 불가능
    // name 메서드는 open 붙어서 override 가능
    override fun name(): String {
    	return "Kim Gilsun"
    }
}



internal

코틀린의 가시성은 자바와 비슷하다. 하지만 자바의 기본 가시성인 패키지 전용은 코틀린에 없다. 대신 internal 이라는 가시성을 제공한다.

internal동일한 모듈 내에 있는 클래스들의 접근을 제한한다. 모듈은 안드로이드의 경우, gradle 프로젝트가 모듈이 될 수 있다.

변경자클래스 멤버최상위 선언
public모든 곳에서 사용 가능모든 곳에서 볼 수 있음
internal같은 모듈 안에서만 사용 가능같은 모듈 안에서만 볼 수 있음
protected하위 클래스에서만 사용 가능클래스 밖에서는 적용할 수 없음
private같은 클래스 안에서만 사용 가능클래스 밖에서는 같은 파일 안에서만 사용 가능



참고

0개의 댓글