[Kotlin] 상속

PUJIN·2023년 6월 8일
0
post-thumbnail

상속


부모 클래스 : open class 클래스명 { }
자식 클래스 : class 클래스명 : 부모 클래스명() { }

다른 클래스의 부분을 그대로 물려받는 것

  • 코드의 중복을 피하기 위해 사용 (중복 최소화)
  • 코틀린에서 class 선언할 경우 자바 파일에서 final class로 변환
    open 키워드 사용 : 일반 class로 정의 & 상속 가능
  • 클래스의 객체 생성시 부모 클래스의 기본 생성자(매개변수가 없는)가 자동 호출
  • 부모 클래스에 기본생성자가 없는 경우 : 자식 클래스에서 명시적으로 호출
open class SuperClass(var a1:Int)

class SubClass : SuperClass2{
    constructor() : super(100){
    }
}

class SubClass2 : SuperClass(100)

객체 생성

  • 모든 객체는 부모 클래스형 참조 변수에 담을 수 있다.
  • 부모 클래스형 참조 변수를 사용하는 경우 : 부모 클래스에 정의되어 있는 멤버만 사용 가능

* SuperClass : 부모 클래스(상속하는 클래스)
* SubClass : 자식 클래스(상속받는 클래스)



Overriding


부모 메서드 : open fun 함수명() { }
자식 메서드 (overriding) : override fun 함수명() { }

부모 클래스의 메서드를 자식 클래스에서 재정의

  • 부모 클래스의 메서드의 이름, 매개변수 형태 모두 동일해야 한다.
  • 코틀린에서 method 선언할 경우 자바 파일에서 final method로 변환
    open 키워드 사용 : 일반 method로 정의 & overriding 허용
  • override 키워드 사용 : overriding한 메서드라는 것 명시

객체 생성

  • 부모 클래스 타입 변수로 Overriding한 method를 호출할 경우 자식 method 호출



this


객체 자기 자신 지칭

  • 멤버 변수(메서드)와 메서드 내부 변수(메서드) 구분할 때 사용
  • 생성자에서 다른 생성자 호출할 때 사용



super


부모 영역 지칭

  • overriding한 상황에서 부모 메서드(생성자)를 호출하는 경우
  • 멤버 변수와 상속받은 멤버 변수 구분할 때 사용
  • overriding한 메서드와 부모 메서드 구분할 때 사용

0개의 댓글