zoukankan      html  css  js  c++  java
  • Swift学习第二天--面向对象

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    var str = "Hello, playground"
    
    
    //-------------------- 类和属性 --------------------
    
    class Role{
        
        //成员属性
        var id = ""
        var money = 0
        
        //静态属性
        static var method = "RNA"
        
        //子类可以重写的静态属性
        class var url :String {
            return "Malcolm Feng"
        }
        
        //成员方法
        func playgame() -> String{
            return "playing....(*&^%$#$%^&*(GFR&*"
        }
        //静态方法
        static func playboll() -> String{
            return "playing boll.......23456789"
        }
        //子类可重写的静态方法
        class func playwater() -> String{
            return "playing water......aliuehflkauweflk"
        }
        
    }
    
    // 1.调用成员属性
    let hero = Role()
    hero.id = "123456789"
    hero.money = 5000
    hero.id
    
    // 2.调用成员方法
    hero.playgame()
    
    // 3.调用静态属性
    Role.method
    Role.url
    
    // 4.调用静态方法
    Role.playwater()
    Role.playboll()
    
    
    
    
    
    
    //-------------------- 类的继承 --------------------
    
    class Myrole :Role{
        var method :String = "DNA"
        override class var url :String {  //重写父类静态属性
            return "FengDianLong"
        }
        
        override func playgame() -> String{
            return "play game by child class"
        }
        
        override static func playwater() -> String{
            return "playing water by child class"
        }
    
    }
    
    Myrole.method
    Myrole.url
    Myrole.playwater()
    Myrole.playboll()
    
    
    
    
    
    //-------------------- 结构体和属性 --------------------
    struct Me{
        static var name = "Malcolm"
        static var url = "http://malcolm.cn"
        var thanks = ""
        var information :String {
            return Me.name + " 的网站:" + Me.url + thanks
        }
    }
    //调用静态属性
    print(Me.name)
    
    //调用成员属性
    var me = Me(thanks:"谢谢光临")
    print(me.information)
    
    //for i in Array(1...100){
    //    print(i)
    //}
    //print("1")
    
    
    
    //-------------------- 下标 --------------------
    
    //常见的下标
    var array = ["feng","dian","long"]
    array[1]
    
    var dict = ["name":"fengdianlong", "age":"24", "langruage":"swift"]
    dict["name"]
    
    struct CycleArea{
        func area(radius: Double) -> Double {
            return Double.pi * pow(radius, 2)
        }
        subscript(radius : Double) -> Double{
            return Double.pi * pow(radius, 2)
        }
    }
    
    //调用方法
    var cycleArea = CycleArea()
    cycleArea.area(radius: 3)
    
    //调用subscript
    cycleArea[3]
    
    
    //-------------------- 初始化 --------------------
    
    //**********类 的参数初始化
    class Room {
        var season : String
        var temp : Int
        
        init(season: String, temp:Int) {
            self.season = season
            self.temp = temp
        }
    }
    let room = Room(season: "spring", temp:32)
    room.season
    room.temp
    
    //**********结构体 的参数初始化
    struct RoomStruct{
        var season : String
        var temp : Int
    }
    
    let roomStruct = RoomStruct(season : "summer", temp : 34)
    roomStruct.season
    roomStruct.temp
    
    //**********便利构造器
    class Food{
        var name :String
        
        init(name :String) {
            self.name = name
        }
        
        convenience init(){
            self.init(name: "水果")
        }
    }
    
    let food = Food()
    food.name
    
    //**********可失败构造器
    
    struct Animal{
        var name : String
        
        init?(name : String) {
            if name.isEmpty{
                print("没有给动物取名哦")
                return nil
            }
            self.name = name
        }
    }
    
    let cat = Animal(name:"")
    cat?.name
    
    let dog = Animal(name:"狗狗")
    dog?.name
    
    
    //-------------------- 异常 --------------------
    //创建异常枚举
    enum LearningObs : Error{
        case noMethod, noReading, noTool(tool : String)
    }
    
    //创建学习ios开发的方法
    func iosDev(method: Bool, style : Bool, hasTool : Bool) throws{
        guard method else {
            throw LearningObs.noMethod
        }
        guard style else {
            throw LearningObs.noReading
        }
        guard hasTool else {
            throw LearningObs.noTool(tool: "缺Mac电脑")
        }
    }
    
    //买电脑
    var budget = 7000
    
    func buy(tool:String){
        if budget >= 6000 {
            budget -= 6000
            print("您已经购买Mac电脑")
        } else {
            print("资金不足")
        }
    }
    
    //调用学习ios开发的方法  捕获异常 进行处理
    do{
        try iosDev(method: false, style: false, hasTool: false)
        print("开始学习IOS开发")
    }catch LearningObs.noMethod {
        print("没有好的学习方法")
    }catch LearningObs.noReading {
        print("不想看书")
    }catch LearningObs.noTool(let tool) {
        print("没有mac电脑")
        buy(tool: "mac")
    }
    
    
    //********* 不用关注异常的细节,可以使用 try?  try!
    if let result = try? iosDev(method: true, style: true, hasTool: true){
        print("恭喜进入学习")
    }else{
        print("学习条件不足")
    }
  • 相关阅读:
    luogu P1833 樱花 看成混合背包
    luogu P1077 摆花 基础记数dp
    luogu P1095 守望者的逃离 经典dp
    Even Subset Sum Problem CodeForces
    Maximum White Subtree CodeForces
    Sleeping Schedule CodeForces
    Bombs CodeForces
    病毒侵袭持续中 HDU
    病毒侵袭 HDU
    Educational Codeforces Round 35 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/malcolmfeng/p/7018905.html
Copyright © 2011-2022 走看看