swift自学笔记(六)(构造方法、析构方法)


// ****************构造方法*****************************//

//是一种特殊的方法,一个对象创建完后都需要调用构造方法进行初始化(比如属性初始化)

// 构造方法的特点:方法名 init 没有func关键字 没有返回值

class Dog {

    var name:String // 可以在这里给属性初始值

    var age:Int

    init(name:String, age:Int){ // init 前面没有func关键字 后面也没有返回值哦

        self.name = name //也可以在这里给属性初始值,我在这里给的

        self.age = age

        print("www")

    }

}

var dd = Dog(name: "lala", age: 90) //当创建对象的时候就会调用带有参数的init方法,注意:1,函数的参数都是局部的 2func方法默认的第一个参数是局部参数其余参数既是局部又是外部的。3.init构造方法的所有的参数既是局部的又是外部的。

// 存储属性的初始化:在对象创建时,所有的存储属性必须有初始值,在定义属性时设置默认值或在构造方法(init)中为属性赋值


//****构造方法的类型

  //**指定构造方法,默认情况下所有的构造方法都是指定构造方法,

  //**便利构造方法,被convenience关键字修饰的构造方法就是便利构造方法

  //**构造方法的细节:1.默认情况下,每一个类都有个隐式的无参的指定构造方法:init(){/*...*/},2.如果你自己生成了有参的构造方法,那么系统就不会再帮你生成默认的那个无参的构造方法了。3.指定构造方法必须调用其直接父类的指定构造方法(除非没有父类)4.便利构造方法必须调用同一类中定义的其他构造方法(不能调用父类) 5.便利构造方法必须最终以调用一个指定构造方法结束 6.如果父类中只有一个指定构造方法,而且是无参的,子类的指定构造方法默认会自动调用父类中无参的指定构造方法(例2

//

class man {

    var name:String

    var age:Int

    var height:Double

    

    init(name:String, age:Int, height:Double){

        self.name = name

        self.age = age

        self.height = height

    }

    

    convenience init(name:String){

        self.init(name:name, age:90, height:60.5)

    }

    

    convenience init(age:Int){

        self.init(name:"", age:age,height:60.9)

    }

    

    convenience init(height:Double){

        self.init(name:"", age:80, height:height)

    }

}

// 2

class Animal{

    

    init() {

        print("rrrr")

    }

}


class cat : Animal {

    init(name:String) { //系统会在这里默认调用父类的无参init指定构造方法

        print("eeeee")

    }

}

var c = cat(name: "ddd")



//***************析构方法************************//

 //***一个对象被释放之前。析构方法会立即被自动调用

 //***析构方法不带任何参数,不带小括号

 //***一般在析构方法中进行资源的释放,不可以手动调

class dog {

    deinit {

        print("dead")

    }

}

func newDog(){

    _ = dog()

}


newDog()



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值