Swift 类和对象 7.22
class Dog { //类名的首字母要大写
//成员变量
var kind: String = "" //创建狗的品种
var weight: Double = 0.0 //创建狗的重量
func bite(name: String) { //假如狗会咬人
print("Bite",name)
}
}
//与结构体struct的区别
//1.用let定义的结构体变量,成员不能修改
//2.结构体是值类型,在赋值的时候会发生复制
//3.类是引用类型
//4.结构的成员是方法需要加mutating才能修改成员变量
//类calss的默认构造是没有参数的
//构造函数
init() {
}
//函数//方法
//当一个类没有创建构造函数(init)时,编译器自动生成一个无参数的构造函数,
//一旦创建自定义构造函数,编译器将不会自动生成构造函数
let dog = Dog() //创建对象,在堆上分配空间
dog.kind = "吉娃娃"
dog.weight = 4
dog.bite("张三")
class Cat {
var kind: String = ""
var weight: Double = 0.0
var name: String = ""
func eat(food: Double) -> Double {
weight += food
return weight
}
class func Animal() -> Cat {
return Cat() }
}
let cat01 = Cat()
dog.kind = "波斯猫"
//析构函数 从程序中删除,从内存中释放掉
deinit() {
}
//strong/weak
//强引用/弱引用
//当一个的强引用个数大于0是,对象就不会被销毁!!!
//变量默认的类型都是strong类型
//weak的应用类型一定是Optional类型(隐含) Dog?
//weak仅仅是通过变量(引用)找到对象而已 (只是使用)
//strong强引用可以维持对象不被销毁 (拥有)
var d1 = Dog()
var d2 = d1
let ani03 = Cat.Animal()
ani03.name = "Katty"
print(ani03.name)