//: Playground - noun: a place where people can play
import UIKit
protocol Move {
func walk()
func run()
func jump()
}
protocol Action{
func pickup()
}
protocol Fight {
func attack()
func shield()
}
// 프로토콜
// 클래스의 걸계도
// 함수의 정의만 가능하고 구현은 할수 없다
// 직접 인스터스 생성 불가
// 반드시 클래스 상속된 형태로만 사용가능
//****** 다중 상속이 가능
//****** 자식클래스는 반드시 부모 프로토콜의 모든 함수를 재정의 해야한다.
// 이때 override 키워드는 사용 X
class Character {
var name : String
init (name: String) {
self.name = name
}
}
class MainCharacter : Character, Action, Move, Fight{
func attack() {
print("\(self.name) >> 공격")
}
func shield() {
print("\(self.name) >> 방어")
}
func walk() {
print("\(self.name) >> 걷다")
}
func run() {
print("\(self.name) >> 뛰다")
}
func jump() {
print("\(self.name) >> 점프")
}
func pickup() {
print("\(self.name) >> 아이템을 줍다")
}
}
class Monstor : Character, Move, Fight{
func attack() {
print("\(self.name) >> 공격")
}
func shield() {
print("\(self.name) >> 방어")
}
func walk() {
print("\(self.name) >> 걷다")
}
func run() {
print("\(self.name) >> 뛰다")
}
func jump() {
print("\(self.name) >> 점프")
}
}
var c = MainCharacter(name: "주인공")
c.attack()
c.jump()
c.pickup()
var m = Monstor(name: "악당")
m.attack()
m.shield()
m.run()