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.告诉代理对象什么时候干活
*/