728x90
반응형
0. 이 글을 작성하는 이유
코틀린의 Class에서 상속을 받는 경우 ()를 붙이는 경우가 있고 안 붙이는 경우가 있다. 어떤 차이가 있는지 약간의 부연 설명을 더해서 정리하기 위해
1. Kotlin에서의 상속과 구현
Kotlin은 Java와는 다르게 extends나 implements키워드 없이 : 키워드 하나로 모든 것을 처리하고 있다.
class Animal : AnimalInterface {
}
class Carnivore : Animal(),CarnivoreInterface {
}
여기서 Java 사용자가 두 가지 부자연스럽게 느끼는 부분이 생겼다. 왜 갑자기 빨간 줄이 생겼으며 소괄호를 만들었는가
2. Kotlin의 Open키워드
Java에서는 기본적으로 클래스 생성 시 모든 접근 제어자가 default로 되어있다.
하지만 Kotlin에서는 그냥 생성하게 되면 기본적으로 final 키워드가 붙게 되어 상속이 불가능해진다.
즉 상속을 받기 위해서는 우선 open키워드를 이용해 상속이 가능한 상태로 만들어주어야 한다.(sealed class로 제한하는 방법도 존재하지만 추후 설명하도록 하겠다.)
open class Animal : AnimalInterface{
}
class Carnivore : Animal(),CarnivoreInterface {}
3. 생성자
Java에서는 소괄호 없이 그냥 막 쓰면 충분했다.
public class JavaAnimal {
}
public class JavaCarnivore extends JavaAnimal{
}
하지만 코틀린에서 기본 생성자가 존재하는 클래스를 상속받는 경우 ()를 붙여주어야 한다.
728x90
반응형
'JAVA > Kotlin' 카테고리의 다른 글
Kotlin의 TODO (0) | 2023.10.05 |
---|---|
코틀린 Int? Number? (0) | 2022.11.19 |
Kotlin으로 서버에서 json데이터 가져오기(FastAPI를 곁들인) (0) | 2022.07.24 |