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("学习条件不足")
}
原文地址:https://www.cnblogs.com/malcolmfeng/p/7018905.html