Kotlin/포스팅

코틀린 상속

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

코틀린에서는 클래스의 상속을 표현하기 위해 : 기호를 사용합니다. 이것은 자바와 비슷하지만 몇 가지 차이가 있습니다. 아래에서는 코틀린에서의 상속에 대한 주요 내용을 설명하겠습니다.

 

1. 클래스 상속 및 선언

코틀린에서 클래스를 상속하려면 클래스 이름 뒤에 콜론(:)을 사용하고, 상속할 클래스의 이름을 명시합니다.

open class Animal(val name: String)

class Dog(name: String, val breed: String) : Animal(name)

위의 예제에서 Dog 클래스는 Animal 클래스를 상속하고 있습니다. Animal 클래스는 open 키워드로 표시되어야 하며, 그렇지 않으면 다른 클래스에서 상속할 수 없습니다.

 

2. 상속과 생성자

코틀린에서 하위 클래스에서 상위 클래스의 생성자를 호출하는 방법은 다음과 같습니다. 상위 클래스의 생성자는 : 뒤에 바로 호출됩니다.

open class Animal(val name: String, val age: Int)

class Dog(name: String, age: Int, val breed: String) : Animal(name, age)

 

3. 메서드 오버라이딩

하위 클래스에서 상위 클래스의 메서드를 오버라이딩하려면 override 키워드를 사용합니다.

open class Animal {
    open fun makeSound() {
        println("Animal makes a sound")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        println("Dog barks")
    }
}

 

4. 상위 클래스의 프로퍼티 및 메서드 호출

하위 클래스에서 상위 클래스의 프로퍼티나 메서드를 호출할 때는 super 키워드를 사용합니다.

open class Animal {
    open fun makeSound() {
        println("Animal makes a sound")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        super.makeSound()
        println("Dog barks")
    }
}

 

5. 추상 클래스와 인터페이스

추상 클래스는 인스턴스를 가질 수 없는 클래스이며, 인터페이스는 추상 메서드의 집합을 정의합니다. 인터페이스와 추상 클래스는 클래스 상속 외에도 인터페이스 구현을 통해 다중 상속을 지원합니다.

interface Animal {
    fun makeSound()
}

class Dog : Animal {
    override fun makeSound() {
        println("Dog barks")
    }
}

 

6. 인터페이스 상속

인터페이스 간의 상속은 다중 상속을 허용합니다.

interface Walkable {
    fun walk()
}

interface Swimmable {
    fun swim()
}

class Dog : Walkable, Swimmable {
    override fun walk() {
        println("Dog is walking")
    }

    override fun swim() {
        println("Dog is swimming")
    }
}

 

7. 상속 제어자

코틀린에서 클래스와 메서드는 기본적으로 final이기 때문에 상속이 금지됩니다. 만약 상속을 허용하려면 open 키워드를 사용해야 합니다.

open class Animal

class Dog : Animal() // 정상

final class Cat : Animal() // 더 이상 상속 불가능

상속을 허용하려면 클래스 앞에 open 키워드를 추가해야 합니다.

이러한 특징들을 통해 코틀린에서 상속을 제어하고 유연하게 사용할 수 있습니다. 클래스의 상속 가능 여부는 기본적으로 안전하게 제어되어, 필요한 경우에만 상속을 허용할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 하위 클래스 초기화  (0) 2024.01.02
코틀린 하위 클래스 선언  (0) 2024.01.02
코틀린 파일 시스템 유틸리티  (0) 2024.01.02
코틀린 파일 콘텐츠 접근  (0) 2024.01.01
코틀린 URL 유틸리티  (0) 2024.01.01