본문 바로가기
Languages/Kotlin

[Kotlin] 상속, 오버 라이딩, 접근 제한자(Inheritance, Overriding, Modifier)

by jbrochan 2023. 4. 18.

상속시의 생성자

상속이란 다른 클래스를 참조해서 클래스를 선언하는 것을 의미한다.

코틀린에서 상속이란 선언부에 콜론과 함께 상속받을 클래스의 이름과 괄호를 입력하면된다.

상위 클래스는 하위 클래스에서 참조할 수 있도록 open 키워드를 사용한다.

또한 하위 클래스에서 상위 클래스를 상속할 때는 상위 클래스의 상속자를 같이 호출해주어야 한다.

 

open class SuperClass{    // 다른 클래스가 상속 받을 수 있도록 open 키워드 사용
}

class SubClass: SuperClass(){    // SuperClass를 상속받는 SubClass
}

 만약 하위 생성자에 보조 생성자만 존재한다면 다음과 같이 선언하는 것 또한 가능하다.

 

open class SuperClass(name: String){    // 다른 클래스가 상속 받을 수 있도록 open 키워드 사용
}

class SubClass: SuperClass(){    // SuperClass를 상속받는 SubClass
    constructor(name: String): super(name){
    }
}

오버라이딩

오버라이딩(Overriding)이란 상위 클래스에 선언된 변수나 함수를 같은 이름으로 하위 클래스에서 다시 선언하는 것이다.

코틀린에서 오버라이딩을 사용하려면 다음과 같은 조건들이 있다.

  • 상위 클래스에서 오버라이딩을 선언하고 싶은 함수나 멤버 변수 앞에 open 키워드를 붙여야한다.
  • 하위 클래스에서 오버라이딩을 선언하고 싶은 함수나 멤버 변수 앞에 override 키워드를 붙여야한다.
open class SuperClass{
    open var data = 10
    open fun function(){
        println("Super class")
    }
}

class SubClass: SuperClass(){
    override var data = 20
    override fun function(){
        println("Sub class")
    }
}

접근 제한자

접근 제한자란 클래스의 멤버를 어느 범위까지 이용할 수 있게 하는가 제한하는 키워드이다.

코틀린에서의 접근 제한자는 public, internal, protected, private 등이 있다.

 

접근 제한자 최상위 사용 클래스 멤버 이용
public 모든 파일에서 가능 모든 클래스에서 가능
internal 같은 모듈이내에서 가능 같은 모듈이내에서 가능
protected 사용 불가 상속 관계의 하위 클래스에서만 가능
private 파일 내부에서만 이용 클래스 내부에서만 이용

 

댓글