类和协议

swift类和协议


import Foundation

//类:具有相同特征和行为事物的抽象


//根据类创建的实例就是对象


//类的创建格式

/*

class 类名:父类 {

    属性

 行为

}

*/


//人类:person属性:姓名年龄性别行为:吃饭睡觉

//NSObject也是swift中所有类的基类

class Person:NSObject{

    //属性

   //1.swift中不允许非可选类型的属性不赋初始值

   // var name:String = ""

   

    

   //2在初始化方法中给属性赋值

    /*var name:String

    

    init(name:String) {

        self.name = name

    }*/

    

    

   //3.把属性定义为可选类型

    //var name:String?

    

    

   //4.把属性定义为隐式解析类型

    var name:String!

    var age:Int!

    var gender:String!

    

    //类型属性

    staticvar color:String!

    

    

    

   //提供一个快速创建属性初始化方法

    init(name:String,age:Int,gender:String){

        self.name = name

        self.age = age

        self.gender = gender

    }

    

   //行为(方法)

    

    func eat() {

        print("吃吧吃吧")

    }

    func sleep() {

        print("好好睡觉天天向上")

    }

    //类方法

    staticfunc daDouDou(){

        print("打豆豆")

    }

    

}


//创建一个对象

let p =Person(name:"楠哥",age:17,gender:"")

print(p.name,p.gender,p.age)

//行为

p.eat()

p.sleep()


//访问类属性

Person.color ="黄色"

print(Person.color)

//调用类方法

Person.daDouDou()



class Student :Person {

    var number:Int!

    func study(){

        print("好好学习")

    }

   //重写从父类继承的方法

overridefunc eat() {

        super.eat()

        print("吃好吃的东西")

    }

}


let stu =Student(name:"xiao",age:65,gender:"")

print(stu.name,stu.age,stu.gender)

stu.number =100101

stu.study()




//协议 代理设计模式

//oc下的协议  

@objcprotocol GirlDelegate{

   //协议中只写函数的声明

   //必须实现的方法

    func makeMoney()

   //选择实现的方法

    @objcoptionalfunc wish()

    @objcoptionalfunc cook()

    @objcoptionalfunc doHousWork()

    

}

class Girl:NSObject{

   //设置代理属性

    var delegate:GirlDelegate!

   //女孩想买东西

    func buySomething(){

        //男朋友挣钱

        self.delegate.makeMoney()

    }

    //女孩饿了

    func hungry(){

        //男朋友做饭

        self.delegate.cook!()

    }

  //女孩有脏衣服

    func youZangyifu(){

        //男朋友洗衣服

        self.delegate.wish!()

    }

   //女孩家里脏了

    func cleanHome(){

        //男朋友做家务

        self.delegate.doHousWork!()

    }

    

}

//遵循协议

class Boy:NSObject,GirlDelegate{

     func makeMoney() {

        print("一天一千块")

    }

    func cook() {

        print("法式小甜点")

    }

    func wish() {

        print("手洗")

    }

    func doHousWork() {

        print("找阿姨")

    }

}


let nanGe =Girl()


let liYiFeng =Boy()

//给代理属性赋值

nanGe.delegate =liYiFeng


//楠哥发号指令

nanGe.buySomething()

nanGe.hungry()



//����������������������������������������������������

/*

代理设计模式的步骤

 1.设计协议

 2.设计代理属性

 3.遵循协议

 4.实现协议中的方法

 5.在外界指定代理属性(给代理属性赋值)

 6.告诉代理对象什么时候干活

*


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值