반응형

1. 상속(inherit)

코틀린의 상속은 자바와 매우 비슷하다

 

자바의 상속

class Person {
	private final name;
	
	public Person(name) {
		this.name = name;
	}
}

public class Kim extends Person {
	public Kim(name) {
		super(name);
	}
}

자바의 상속은 extends 키워드를 통해 가능하며, 이때 super를 통해 부모의 생성자를 호출할 수 있다

 

코틀린의 상속

(1)
open class Person(val name: String)

class Kim(name: String): Person(name)

(2)
open class Person(open val name: String)

class Kim(override val name: String): Person(name)

(3)
open class Person(val name: String)

class Kim(val name: String): Person(name)

(4)
open class Person(val name: String)

class Kim: Person{
	constructor(name: String): super(name) {
		println("생성자 호출됨")
	}
	constructor(): super("김철수")
}

코틀린은 클래스 생성의 끝부분에 :와 함께 상속하고자 하는 클래스를 지정하고 해당 클래스에 대한 주생성자에 맞게 값이 할당되도록 작성하면 된다

이때 부모 클래스의 앞에 open 키워드가 존재해야만 한다

자식 클래스에서 부모 클래스의 생성자를 호출하는 방법으로는 주생성자에서 호출할 수 도 있고 부생성자에서도 가능하다

자바와 다르게 코틀린의 super는 주생성자 또는 부생성자 옆에만 붙일 수 있다

코틀린의 상속도 자바와 마찬가지로 하나의 클래스에 대해서만 상속이 가능하다(다중 상속을 지원하지 않는다)

반응형

+ Recent posts