Swift 类和对象 7.22

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)

你可能感兴趣的:(Swift 类和对象 7.22)