加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift篇第三期:类、枚举、结构体

发布时间:2020-12-14 02:01:43 所属栏目:百科 来源:网络整理
导读:首先我们来创建一个类吧,然后在里面声明属性与方法 classBaseUser{varuserName:String="swh"varpassword:String="123"//这里面有一个构造方法,其实就类似我们重写init方法一样,然后可以加些参数//但是我们在声明该类的时候直接在类名后面接括号就可以了哦


首先我们来创建一个类吧,然后在里面声明属性与方法

classBaseUser{
varuserName:String="swh"
varpassword:String="123"

//这里面有一个构造方法,其实就类似我们重写init方法一样,然后可以加些参数
//但是我们在声明该类的时候直接在类名后面接括号就可以了哦
init(username:String,password:String){
self.userName=username
self.password=password
}

varname:String{
//下面是set方法的两种定义
set(value){
self.userName=value
println("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.Hearts

println(suit.rawValue)

lettempSuit=Suit(rawValue:"梅花")

println(tempSuit!.rawValue)


我们也可以新建一个类,并在里面声明某个属性是枚举类型

好啦,我们来创建一个结构体吧

structHero{
staticvarisGirl:Bool=false
varrank:Rank
varname:CompassPointType

functoString()->String{
return"(name):(rank.rawValue)"
}
}


其实它跟类还是差不多的,只是它传值的时候并不涉及传地址哦

然后我们来写个协议吧

protocolSimpleProtocol{
varvalue:String{get}

functoString()->String
mutatingfuncupdate()
}

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=50
varheight:Int=100
}

extensionRect:BaseProtocol{
funcarea()->Int{
returnwidth*height
}

funcequal()->Bool{
returnheight==width
}
}

extensionInt{
functoString()->String{
return"你猜"
}
}

类和协议就比较好理解了,与O-C没有什么区别的哦


OK,就这么多咯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读