swift篇第三期:类、枚举、结构体
首先我们来创建一个类吧,然后在里面声明属性与方法
classBaseUser{varuserName:String="swh"varpassword:String="123"//这里面有一个构造方法,其实就类似我们重写init方法一样,然后可以加些参数//但是我们在声明该类的时候直接在类名后面接括号就可以了哦init(username:String,password:String){self.userName=usernameself.password=password}varname:String{//下面是set方法的两种定义set(value){self.userName=valueprintln("methodset")}//set{//self.userName=newValue//println("methodset")//}get{println("methodget")returnself.userName}}functoString()->String{return"username:\(self.userName):\(self.password)"}}
这时候我们来调用对应的属性与方法
//声明并初始化varuser=BaseUser(username:"kutian",password:"123456")println(user.toString())user.name="kutian"println("\(user.name)\(user.password)")
接下来,我们继续创建一个类来继承之前的类
继承,跟大家想的没声明区别
classAdminUser:BaseUser{varmanagerModel:String="炉石传说"overridefunctoString()->String{return"炉石传说"}}varadminUser=AdminUser(username:"swh",password:"123")println(adminUser.toString())
好啦,接下来我们创建枚举
我们可以直接赋值,也可以弄一个方法,让它返回新值
enumSuit:String{caseSpades="黑桃",Hearts="红桃",Diamonds="方块",Clubs="梅花"functoString()->String{switchself{case.Spades:return"黑桃"case.Hearts:return"红桃"case.Diamonds:return"方块"case.Clubs:return"梅花"default:return"鬼牌"}}}
然后调用枚举里面涉及到的一些方法
这里面有新的rawValue还有!是把任意nil转为正常的哦
varsuit=Suit.Heartsprintln(suit.rawValue)lettempSuit=Suit(rawValue:"梅花")println(tempSuit!.rawValue)
我们也可以新建一个类,并在里面声明某个属性是枚举类型
好啦,我们来创建一个结构体吧
structHero{staticvarisGirl:Bool=falsevarrank:Rankvarname:CompassPointTypefunctoString()->String{return"\(name):\(rank.rawValue)"}}
其实它跟类还是差不多的,只是它传值的时候并不涉及传地址哦
然后我们来写个协议吧
protocolSimpleProtocol{varvalue:String{get}functoString()->Stringmutatingfuncupdate()}protocolBaseProtocol{funcequal()->Bool}classSuperClass{varname:String="swh"}
接下来创建一个类来遵循并实现这个协议
classSubClss:SuperClass,SimpleProtocol,BaseProtocol{varvalue:String="defalut"functoString()->String{returnvalue}funcupdate(){value="newvalue"}funcequal()->Bool{returnfalse}}
再接下来,我们再写一个扩展好了
classRect{varwidth:Int=50varheight:Int=100}extensionRect:BaseProtocol{funcarea()->Int{returnwidth*height}funcequal()->Bool{returnheight==width}}extensionInt{functoString()->String{return"你猜"}}
类和协议就比较好理解了,与O-C没有什么区别的哦
OK,就这么多咯
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。