大佬教程收集整理的这篇文章主要介绍了swift自学笔记(六)(构造方法、析构方法),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// ****************构造方法*****************************//
//是一种特殊的方法,一个对象创建完后都需要@L_197_4@构造方法进行初始化(比如属性初始化)
// 构造方法的特点:方法名 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) //当创建对象的时候就会@L_197_4@带有参数的init方法,注意:1,函数的参数都是局部的 2,func方法默认的第一个参数是局部参数其余参数既是局部又是外部的。3.而init构造方法的所有的参数既是局部的又是外部的。
// 存储属性的初始化:在对象创建时,所有的存储属性必须有初始值,在定义属性时设置默认值或在构造方法(init)中为属性赋值
//**指定构造方法,默认情况下所有的构造方法都是指定构造方法,
//**便利构造方法,被convenience关键字修饰的构造方法就是便利构造方法
//**构造方法的细节:1.默认情况下,每一个类都有个隐式的无参的指定构造方法:init(){/*...*/},2.如果你自己生成了有参的构造方法,那么系统就不会再帮你生成默认的那个无参的构造方法了。3.指定构造方法必须@L_197_4@其直接父类的指定构造方法(除非没有父类)4.便利构造方法必须@L_197_4@同一类中定义的其他构造方法(不能@L_197_4@父类) 5.便利构造方法必须最终以@L_197_4@一个指定构造方法结束 6.如果父类中只有一个指定构造方法,而且是无参的,子类的指定构造方法默认会自动@L_197_4@父类中无参的指定构造方法(例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) { //系统会在这里默认@L_197_4@父类的无参init指定构造方法
print("eeeee")
}
}
var c = cat(name: "ddd")
//***************析构方法************************//
//***一个对象被释放之前。析构方法会立即被自动@L_197_4@
class dog {
deinit {
print("dead")
}
}
func newDog(){
_ = dog()
}
newDog()
以上是大佬教程为你收集整理的swift自学笔记(六)(构造方法、析构方法)全部内容,希望文章能够帮你解决swift自学笔记(六)(构造方法、析构方法)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。