Akashic Records

상속과 다형성 본문

Kotlin for Beginners

상속과 다형성

Andrew's Akashic Records 2023. 6. 1. 17:25
728x90

객체지향 프로그래밍의 핵심 개념 중 하나는 상속입니다. 상속은 클래스가 다른 클래스의 속성과 메서드를 상속받을 수 있게 해주는 매커니즘입니다. 이렇게 하면 코드의 재사용성을 높이고 중복을 줄일 수 있습니다.

 

  1. 상속

Kotlin에서 클래스는 기본적으로 상속이 불가능하도록 설계되어 있습니다. 클래스를 상속 가능하게 만들려면, open 키워드를 사용하여 클래스를 선언해야 합니다.

예제:

open class Animal {
    var name: String = ""

    fun eat() {
        println("$name is eating.")
    }
}

class Dog : Animal() {
    fun bark() {
        println("$name says: Woof!")
    }
}

val myDog = Dog()
myDog.name = "Bingo"
myDog.eat()  // 출력: Bingo is eating.
myDog.bark() // 출력: Bingo says: Woof!

이 예제에서 Animal 클래스는 open 키워드로 선언되었으며, Dog 클래스는 Animal 클래스를 상속합니다. 따라서 Dog 객체는 Animal 클래스의 eat 메서드를 사용할 수 있습니다.

 

  1. 다형성

다형성은 객체지향 프로그래밍의 또 다른 핵심 개념으로, 객체가 여러 타입을 가질 수 있음을 의미합니다. 다형성은 상속과 밀접한 관계가 있습니다.

예제:

open class Animal {
    open fun sound() {
        println("The animal makes a sound.")
    }
}

class Dog : Animal() {
    override fun sound() {
        println("Woof!")
    }
}

class Cat : Animal() {
    override fun sound() {
        println("Meow!")
    }
}

fun makeSound(animal: Animal) {
    animal.sound()
}

val myDog = Dog()
val myCat = Cat()

makeSound(myDog) // 출력: Woof!
makeSound(myCat) // 출력: Meow!

 

이 예제에서 Dog 클래스와 Cat 클래스는 모두 Animal 클래스를 상속받습니다. 각각의 클래스는 sound 메서드를 오버라이드하여 고유의 소리를 출력합니다. makeSound 함수는 Animal 타입의 파라미터를 받아들이지만, 실제로는 Dog 객체나 Cat 객체를 받아들일 수 있습니다. 이는 다형성의 한 예입니다.

 

상속과 다형성은 코드의 재사용성을 높이고 유연성을 제공하므로, 효율적인 소프트웨어 설계에 중요한 역할을 합니다.

728x90

'Kotlin for Beginners' 카테고리의 다른 글

Null 안정성  (0) 2023.06.02
추상화와 캡슐화  (0) 2023.06.01
클래스와 객체  (0) 2023.06.01
프로시저의 이해  (0) 2023.06.01
함수의 파라미터와 반환 값  (0) 2023.06.01
Comments