[swift] 다형성을 이용하여 각기 다른 자식 클래스의 동작을 일관되게 처리하는 방법

다형성은 객체지향 프로그래밍(OOP)에서 중요한 개념 중 하나로, 하나의 인터페이스를 통해 여러 타입의 객체를 처리하는 기능을 말합니다. Swift에서는 이를 구현하기 위해 프로토콜과 상속을 이용할 수 있습니다. 다양한 자식 클래스들을 동시에 처리하며 일관된 방법으로 동작을 수행하는 예시를 살펴봅시다.

프로토콜(Protocol) 정의하기

protocol Playable {
    func play()
}

위 코드에서 Playable 프로토콜을 정의했습니다. 이 프로토콜은 play 메서드를 가져야 합니다.

다양한 자식 클래스 생성하기

class Video: Playable {
    func play() {
        print("Playing video")
    }
}

class Music: Playable {
    func play() {
        print("Playing music")
    }
}

위 코드에서 VideoMusic 클래스는 Playable 프로토콜을 따르며 play 메서드를 구현했습니다.

다형성 활용하기

func playMedia(_ media: Playable) {
    media.play()
}

let video = Video()
let music = Music()

playMedia(video) // 출력: "Playing video"
playMedia(music) // 출력: "Playing music"

playMedia 함수는 Playable 프로토콜을 따르는 어떤 타입의 객체도 받을 수 있습니다. 이를 통해 videomusic 객체를 일관된 방법으로 처리할 수 있습니다.

위와 같이, Swift의 다형성은 동일한 인터페이스를 지닌 객체들을 일관되게 처리하도록 도와줍니다. 각기 다른 자식 클래스의 동작을 간결하고 일관된 방법으로 처리할 수 있게 해줍니다.