상위 클래스는 super 키워드로 현재 클래스는 this 키워드로 참조가능
super | 상위 클래스 | this | 현재 클래스 |
---|---|---|---|
super.프로퍼티명 | 상위 클래스의 프로퍼티 참조 | this.프로퍼티명 | 현재 클래스의 프로퍼티 참조 |
super.메서드명 | 상위 클래스의 메서드 참조 | this.메서드명 | 현재 클래스의 메서드 참조 |
super() | 상위 클래스의 생성자 참조 | this() | 현재 클래스의 생성자 참조 |
이너 클래스에서 바깥 클래스의 상위 클래스를 호출하려면 super 키워드와 함께 엣(@) 기호 옆에 바깥 클래스명을 작성해 호출
class Outer
{
fun greetings()
{
println("Hello from Outer class")
}
inner class Inner
{
fun greetings()
{
println("Hello from Inner class")
// 외부 클래스의 greetings() 메서드 호출
this@Outer.greetings()
}
}
}
fun main()
{
val outer = Outer()
val inner = outer.Inner()
inner.greetings()
}
위의 코드에서 this@Outer.greetings()
는 이너 클래스의 greetings() 메서드가 아니라 외부 클래스인 Outer 클래스의 greetings()
메서드를 호출한다.