Kotlin/포스팅

코틀린 하위 클래스 선언

짜집퍼박사(짜박) 2024. 1. 2. 00:16

코틀린에서 하위 클래스(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