初始化:描述类、结构体、枚举实例化时,属性如何给初始值的方法。形式: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")