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