iOS经典讲解之Swift枚举(Enum)、协议(protocol)、扩展(Extension)

作者:Loving_iOS

转载请标明出处:http://blog.csdn.net/loving_ios/article/details/49406865

本次开发环境为Xcode7.0.1 创建playground文件 进行的代码编写。

//**********************枚举**************************

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

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

// 类
class Person {
    
    var indeitity:PersonIndetity
    var name:String
    var age:String
    
    // 类的构造器
    init(name:String, age:String, idd:PersonIndetity) {
        self.indeitity = idd
        self.name = name
        self.age = age
    }
    
    func hello() {
        print("hello")
    }
    // 类方法
    class func hello2() {
        
    }
    
}

// 枚举 枚举名.类型 其中枚举名可以省略
var person = Person(name: "Tom", age: "30", idd: PersonIndetity.Student)

// 枚举值得获取
// 获取当前分支
person.indeitity.hashValue
// 获得分区的值
person.indeitity.rawValue

// 继承 类名:父类名

class Student:Person {
    
    // 子类的属性
    var classNumber:Int = 23
    init(name: String, age: String, idd: PersonIndetity, classNumber:Int) {
        
        // 如果属性仅指定类型 需要在super.init之前进行赋值操作
        super.init(name: name, age: age, idd: idd)
        self.classNumber = classNumber
        
    }
    
    // 重写父类方法 需要使用override关键字
    override func hello() {
        
    }
  override class func hello2() {
    
    }
    
}

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

// 类和结构体实现协议方法的时候 需要根据本身的语法规则做出调整

class newStudent:OneProtocol {
    
    func typeFunc() {
        
    }
    class func typeFunc2() {
        
    }
    
   func typeFunc3() {
        
    }
}


struct VideoNew:OneProtocol {
    
    func typeFunc() {
        
    }
    static func typeFunc2() {
        
    }
   mutating func typeFunc3() {
        
    }
}

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

@objc protocol SecondProtocol {
    optional func hello()
}

// 注意:当协议中方法使用optional 声明可选方法时 协议必须声明成@objc 此时的协议为类协议 不能被结构体继承


// 扩展
var value:String = ""
extension Person {
    
    func helloworld() {
        
    }
    
    // 如果想扩展属性 只能是计算属性
    var stu:String {
        get{
            
            return value
        }
        set {
            value = newValue
        }
    }
    
    // 扩展构造器需要使用convenience
    convenience init(name:String, age:String, idd:PersonIndetity, stu:String) {
        self.init(name:name, age:age, idd:idd)
        self.stu = stu
    }
}

var person_one = Person(name: "Tom", age: "20", idd: PersonIndetity.Student, stu: "帅哥")
person_one.stu
person_one.stu = "靓妹"
person_one.stu

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值