您的位置:首页 > 移动开发 > Swift

Swift高级开发语言--枚举,继承,协议,扩展

2015-10-23 19:32 363 查看
枚举

//enum 枚举名: 类型{
//    case 分支1 = 赋值1
//    case 分支2 = 赋值2
//}

enum PersonIndenttity:String {
case Teacher = "Teacher_id"
case Student = "Student_id"
}

// 类
class Person {
var indentity:PersonIndenttity?
var name:String?
var age:String

// 类的构造器
init (name:String, age:String, idd:PersonIndenttity) {
self.name = name
self.age = age
self.indentity = idd
}

func hello() {
print("hello")
}

// 类型fangfa
class func hello2() {

}
}
// 枚举   枚举名.类型
// 枚举名可以省略
var person = Person(name: "毛毛", age: "80", idd: PersonIndenttity.Student)
//枚举值的获取
// 获取当前分支
person.indentity?.hashValue
// 获取分支的值
person.indentity?.rawValue


继承

//继承  类名:父类名
class Student:Person{
var classNumber: Int = 23
init(name: String, age: String, idd: PersonIndenttity, classNum:Int) {
// 如果属性仅仅指定类型,需要在super.init前进行赋值操作
self.classNumber = classNum
super.init(name: name, age: age, idd: idd)

}
// 重写父类方法,需要使用override关键字
override func hello() {

}

override class func hello2() {

}

}


协议

//  协议
protocol OneProtocol {
func typeFunc()
static func typeFunc2()
mutating func typeFunc3()

}

// 类和结构体实现协议方法的时候,需要根据本身的语法规则做出调整
class StudentNew:OneProtocol {
func typeFunc() {

}
class func typeFunc2() {

}
func typeFunc3() {

}
}

struct VideoNew:OneProtocol {
func typeFunc() {

}
static func typeFunc2() {

}
mutating func typeFunc3() {

}
}

// 类同时继承父类和协议的时候,父类必须写在前面
//class StudentNew2:Person, OneProtocol {
//
//}

@objc protocol TwoProtocol {
optional func byebye()
}

// 当协议中方法使用 optional声明可选时,协议必须生命成@objc,此时,协议为类协议:class protocol
// 并且不能被结构体继承
//struct struct2:TwoProtocol {
//
//}


扩展

// 扩展
var value :String = ""
extension Person {
func hello5() {

}
// 如果想扩展属性,只能是计算属性
var stu2:String {
get {
return value
}
set {
value = newValue
}
}
// 扩展构造器的时候需要使用connvenience
convenience init (name:String, age:String, idd:PersonIndenttity, stu2:String){
self.init(name:name, age:age, idd:idd)
self.stu2 = stu2
}
}
var person11 = Person(name: "毛毛", age: "80", idd: .Student, stu2: "傻逼")
person11.stu2
person11.stu2 = "二笔"
person11.stu2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  开发语言 swift