asd

성난호랑이 시니철 ㅣ 2016. 1. 2. 16:10

//: 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()


'메모장' 카테고리의 다른 글

svn  (1) 2018.08.22
엘라스틱에 데이터 넣기  (0) 2017.12.28
스위프트 클레스  (0) 2016.01.02
스위프트 구조체  (0) 2016.01.02
.clone()  (0) 2015.12.30