231212_TIL_프로토콜

ykyo·2023년 12월 12일

프로토콜

  • 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항을 정의해놓은 규약, 약속
  • 설계된 조건만 정의, 스스로 기능을 구현하지 않음
  • 이름과 타입, gettable, settable 을 명시
  • 프로퍼티는 항상 var 로 선언
  • 다중 상속이 가능 (확장성이 높음)

예시

protocol 프로토콜이름 {
	// 프로토콜 정의
}

// 상속받는 클래스의 프로토콜 채택
class 클래스이름: 슈퍼클래스, 프로토콜1, 프로토콜2 {
	// 클래스 정의
}

protocol Vehicle {
	var speed: Double { get set } // get과 set을 모두 요구하는 가변 속성
    var manufacturer: String { get } // 읽기 전용 속성
}

class Car: Vehicle {
	var speed: Double = 0.0 // get과 set이 요구되는 속성을 구현
    var manufacturer: String = "Toyota" // 읽기 전용 속성을 구현
}

class Bicycle: Vehicle {
	var speed: Double = 0.0
    var manufacturer: String { return "Giant" } // 읽기 전용 속성을 연산 프로퍼티로 구현
}

let car = Car()
car.speed = 60.0 //set
print(car.speed) //get
print(car.manufacturer) //get

let bike = Bicycle()
bike.speed = 20.0 //set
print(bike.speed) //get
print(bike.manufacturer) //get
profile
for ios, swift, etc.

0개의 댓글