상속하는 법
코틀린에서는 클래스를 만들면 그 클래스는 기본값으로 private 접근제어자를 가진다
그래서 다른 클래스에서 상속을 하려고 해도 접근을 못해서 상속을 할 수가 없다
다른 클래스에서 상속할 수 있게 해 주려면
클래스 앞에 open을 붙여주면 된다
현재 Car2클래스에서 Car1클래스를 상속받은 모습이다
클래스 안에 있는 메소드도 기본값으로 private 접근제어자를 가진다
따라서 자식 클래스에서 메소드를 오버라이드 해주기 위해서는
오버라이드할 메소드 앞에도 open을 붙여줘야 한다
현재 Car2클래스에서 drive메소드를 오버라이드 한 모습이다
부모 클래스 생성자 호출
자식 클래스에서 부모 클래스 생성자를 호출하는 법은 아래와 같다
현재 SuperCharator클래스에서 Charator클래스를 상속받고 있다
SuperCharator인스턴스를 생성하면
SuperCharator생성자에서 받은 hp, power파라미터를 이용하여 Charator생성자를 호출하게 되고
hp, power가 SuperCharator의 인스턴스 변수가 되는 것이다
여기서 주의할 것이 있다
자식의 생성자로 부모와 똑같은 이름의 변수를 var나 val로 선언해버리면 안 된다
즉, SuperCharator생성자 변수 hp, power를 var나 val로 선언해 버리면 안 된다는 것이다
SuperCharator클래스는 Charator를 상속받았기 때문에
이미 멤버 변수로 hp, power를 가지고 있는 상태이기 때문이다
부모에 없는 다른 멤버 변수가 필요하면
그때는 var나 val로 선언이 가능하다
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.