코틀린에서 하위 클래스(subclass)를 선언하는 방법은 다른 클래스를 상속하고 그 클래스를 확장하여 새로운 클래스를 정의하는 것입니다. 아래에서는 코틀린에서 하위 클래스를 선언하는 방법과 관련된 주요 내용을 설명하겠습니다.
1. 하위 클래스 선언 구문
하위 클래스는 상위 클래스를 콜론(:) 뒤에 명시하여 선언합니다. 하위 클래스가 상속받을 클래스는 class 키워드와 함께 나타나야 합니다.
open class Animal {
// 상위 클래스의 내용
}
class Dog : Animal {
// 하위 클래스의 내용
}
2. 생성자 호출 및 초기화
하위 클래스에서는 상위 클래스의 생성자를 호출하여 초기화할 수 있습니다. super 키워드를 사용하여 상위 클래스의 생성자를 호출합니다.
open class Animal(val name: String)
class Dog(name: String, val breed: String) : Animal(name)
3. 메서드 오버라이딩
하위 클래스에서 상위 클래스의 메서드를 오버라이딩하려면 override 키워드를 사용합니다.
open class Animal {
open fun makeSound() {
println("Animal makes a sound")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Dog barks")
}
}
4. 추가 멤버 선언
하위 클래스에서는 상위 클래스에 선언된 프로퍼티나 메서드 외에도 추가적인 멤버를 선언할 수 있습니다.
open class Animal(val name: String) {
open fun eat() {
println("$name is eating")
}
}
class Dog(name: String, val breed: String) : Animal(name) {
fun bark() {
println("$name is barking")
}
}
5. 인터페이스 구현
클래스는 하나 이상의 인터페이스를 구현할 수 있습니다. 인터페이스를 구현하려면 클래스 선언에 콜론(:)을 사용하고, 구현할 인터페이스 이름을 나열합니다.
interface Swimmable {
fun swim()
}
class Fish : Swimmable {
override fun swim() {
println("Fish is swimming")
}
}
6. 가시성 제어자
하위 클래스에서는 상위 클래스의 멤버 중 private로 선언된 멤버에 접근할 수 없습니다. protected, internal, public과 같은 가시성 제어자를 사용하여 하위 클래스에서의 접근 범위를 지정할 수 있습니다.
open class Animal {
protected val protectedProperty: String = "Protected Property"
private val privateProperty: String = "Private Property"
}
class Dog : Animal() {
fun printProperties() {
println(protectedProperty) // 접근 가능
// println(privateProperty) // 접근 불가능
}
}
7. 봉인된 클래스
클래스를 봉인하려면 sealed 키워드를 사용합니다. 봉인된 클래스는 같은 파일 내에서만 하위 클래스를 선언할 수 있습니다.
sealed class Shape
class Circle : Shape()
class Square : Shape()
봉인된 클래스의 주된 목적은 패턴 매칭과 함께 사용되는 것입니다. 봉인된 클래스는 무한한 하위 클래스를 방지하고, 상속 계층이 한정된 경우 유용합니다.
코틀린에서의 하위 클래스 선언은 기본적으로 자바와 유사하지만, 더 간결하고 표현력이 뛰어나며, 몇 가지 추가적인 기능을 제공합니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 타입 검사 (0) | 2024.01.02 |
---|---|
코틀린 하위 클래스 초기화 (0) | 2024.01.02 |
코틀린 상속 (0) | 2024.01.02 |
코틀린 파일 시스템 유틸리티 (0) | 2024.01.02 |
코틀린 파일 콘텐츠 접근 (0) | 2024.01.01 |