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("学习条件不足")
    }
  • 相关阅读:
    Kubernetes中部署MySQL
    内置函数-format()
    Jenkins-deploymnt
    一次遇到too many open files的解决详情
    一次nginx问题记录
    kickstart自动化安装系统
    Maven —— 命令行清除编译打包
    CURL 发送POST请求
    mysql的my.cnf配置参考
    利用nginx实现生产和灰度环境流量切换
  • 原文地址:https://www.cnblogs.com/malcolmfeng/p/7018905.html
Copyright © 2011-2022 走看看