본문 바로가기
Swift 문법

Swift protocol extension 프로토콜 익스텐션

by 정석 지향 2021. 2. 8.
반응형

protocol Movable {
    
}
protocol Portable {
    func port()
}

extension Movable {
    func move() {
        print("move 실행")
    }
}

struct Human: Movable,Portable {
    func port() {
        print("port 실행")
    }
}

var man = Human()
man.move()
man.port()

Movable 프로토콜에 extension을 하였습니다.

프로토콜에 extension을 이용하면 구현부분을 작성할 수 있습니다.

 

 

struct Human: Movable,Portable {
    func port() {
        print("port 실행")
    }
    func move() {
        print("move 재정의")
    }
}

 

프로토콜 extension에 구현을 재정의 할 수 있습니다.

 

 

 

 

상속이 없는 구조체는 코드 중복이 발생할 수 밖에 없습니다.

이럴 때 프로토콜 extension을 이용하면 다중 프로토콜 채택으로

다중 상속효과와, 기본 구현을 재정의 할 수 있습니다.

 

 

 

protocol Movable {
    
}
protocol Portable {
   
}

extension Movable {
    func move() {
        print("move 실행")
    }
}

extension Portable {
    func port() {
        print("port 실행")
    }
}
struct Bird: Movable, Portable {
    
}
struct Drone: Movable, Portable{
    
}

var bird = Bird()
bird.move()
bird.port()
var drone = Drone()
drone.move()
drone.port()
반응형