본문 바로가기
WebDev

코틀린에서의 상속 및 다형성

by dev-woo 2023. 3. 26.
반응형

안녕하세요 연봉 1억 개발자 dev-woo 입니다.

코틀린은 자바 가상 머신에서 실행되는 순수 객체 지향 프로그래밍 언어입니다. 코틀린은 자바에 비해 간결하고 명확한 문법을 제공하며, 더 나은 안전성 및 성능을 제공합니다. 이번 포스트에서는 코틀린에서의 상속 및 다형성에 대해 알아보겠습니다.

클래스 상속

코틀린은 자바와 마찬가지로 클래스를 상속할 수 있습니다. 클래스 상속을 통해 기존에 작성된 클래스를 확장하거나 재사용할 수 있습니다. 클래스 상속은 다음과 같은 형식으로 작성됩니다.

open class Animal {
   // Animal 클래스의 멤버들
}

class Dog : Animal() { 
   // Dog 클래스의 멤버들
}

위의 코드에서 Animal 클래스는 open 키워드를 사용하여 상속이 가능하도록 선언되었습니다. Dog 클래스는 Animal 클래스를 상속받기 위해 : 기호를 사용합니다. 이제 Dog 클래스는 Animal 클래스의 모든 멤버를 포함하며, 필요한 경우 재정의할 수 있습니다.

메서드 재정의

코틀린에서는 메서드를 재정의할 수 있습니다. 재정의된 메서드는 override 키워드를 사용하여 표시됩니다. 메서드 재정의는 클래스 상속과 함께 사용되며, 다음과 같은 형식으로 작성됩니다.

open class Animal {
   open fun makeSound() {
      //
   }
}

class Dog : Animal() { 
   override fun makeSound() { 
      //
   }
}

위의 코드에서 Animal 클래스에는 makeSound() 메서드가 선언되어 있습니다. 이 메서드는 open 키워드를 사용하여 재정의가 가능하도록 선언되었습니다. Dog 클래스는 Animal 클래스를 상속하고 있으며, makeSound() 메서드를 재정의하여 개 특유의 소리를 내도록 구현하였습니다.

다형성

코틀린에서의 다형성은 상속 및 메서드 재정의와 함께 동작합니다. 다형성은 객체 지향 프로그래밍에서 가장 중요한 개념 중 하나입니다. 다형성을 사용하면 동일한 인터페이스를 구현하는 클래스들이 서로 다른 방식으로 동작할 수 있습니다.

open class Animal {
   open fun makeSound() {
      //
   }
}

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

class Cat : Animal() { 
   override fun makeSound() { 
      println("야옹")
   }
}

위의 코드에서 Animal 클래스는 makeSound() 메서드를 선언하고 있습니다. 이 메서드는 open 키워드를 사용하여 재정의가 가능하도록 선언되었습니다. DogCat 클래스는 Animal 클래스를 상속받고, makeSound() 메서드를 재정의하여 개 및 고양이 특유의 소리를 내도록 구현하였습니다.

fun main() {
   val animal1: Animal = Dog()
   val animal2: Animal = Cat()

   animal1.makeSound()
   animal2.makeSound()
}

위의 코드에서 animal1 변수는 Dog 클래스의 객체를 참조하고 있으며, animal2 변수는 Cat 클래스의 객체를 참조하고 있습니다. 이 두 객체는 Animal 클래스의 인스턴스이며, Animal 클래스의 인터페이스를 구현하고 있습니다. Animal 타입의 변수에 대해 makeSound() 메서드를 호출하면, 각 객체의 재정의된 makeSound() 메서드가 호출되어 개와 고양이의 특유의 소리를 출력하게 됩니다.

결론

코틀린은 객체 지향 프로그래밍 언어이므로, 상속과 다형성은 매우 중요한 개념입니다. 클래스 상속 및 메서드 재정의를 통해 기존 클래스를 재사용하고 확장할 수 있으며, 다형성을 사용하여 코드의 유연성을 높일 수 있습니다. 코틀린이 제공하는 상속 및 다형성 기능은 안전하고 간결한 구현을 가능하게 해주므로, 초보자부터 전문가까지 모두 활용할 수 있습니다.

반응형

댓글