Swift 初始化

初始化:描述类、结构体、枚举实例化时,属性如何给初始值的方法。形式:init(){} 此方法称之为构造器

// 继承
class Viechle {
    var speed = 0
    var des : String {
        return "时速是\(speed)km/h"
    }
    
    func makeNoise() {
        
    }
    
}

class Bike : Viechle {
    var hasBasket = true
}

let aBike = Bike()
aBike.speed = 30
aBike.des

// 初始化
/*
 初始化:描述类、结构体、枚举实例化时,属性如何给初始值的方法。形式:init(){} 此方法称之为构造器
 */

// 1.类的定义没有给属性初始值,则需要在 init中指定
class RoomTemp {
    var season : String
    var temp : Int
    init(season:String, temp:Int) {
        self.season = season
        self.temp = temp
    }
}

let temp1 = RoomTemp(season:"Spring", temp:20)
temp1.season
temp1.temp

// 2.结构体定义不需要指定属性默认的值,应为默认提供一个包含所有属性初始化的构造器
struct RoomTemp2 {
    var season : String
    var temp : Int
//    init(season:String, temp:Int) {
//        self.season = season
//        self.temp = temp
//    }
}

let temp2 = RoomTemp2(season:"Summer", temp:30)
temp2.season
temp2.temp

struct RoomTemp3 {
    var season = "winter"
    var temp = 0
}

let temp3 = RoomTemp3()

// 3.便利构造器:可以通过对主构造器的包装,实现便利的初始化 convenience
class Food {
    var name : String
    init(name:String) {
        self.name = name
    }
    convenience init() {
        self.init(name: "饭食")
    }
}

let food = Food()
food.name

// 4.可失败构造器:针对有可能的初始化失败,返回nil 如:初始化一张图片,图片名字不存在,可能初始化失败

struct Animal {
    let name : String
    init?(name : String) {
        if name.isEmpty {
            print("没有给动物命名!")
            return nil
        }
        self.name = name
    }
}

let cat = Animal(name:"")
let dog = Animal(name:"哈哈")
dog?.name

import UIKit
let ball = UIImage(named:"ball")

你可能感兴趣的:(Swift 初始化)