Swift快速入门之对象和类

Swift快速入门之对象和类,第1张

概述定义类 class Dog { let name = "wang wang" var age = 0 func talk(){ print("我是一只单身狗") }} 使用类如下: let dog=Dog()dog.age = 10dog.talk() 可以看到,swift相比ObjC回归正常了,类是class而不是interface了。类里 定义类
class Dog {    let name = "wang wang"    var age = 0    func talk(){        print("我是一只单身狗")    }}

使用类如下:

let dog=Dog()dog.age = 10dog.talk()

可以看到,swift相比ObjC回归正常了,类是class而不是interface了。类里的成员变量或常量就是类的属性,不用像ObjC那样以@property开头了。定义属性时可以直接赋初始值。定义成员函数与定义全局函数在语法上并没有半毛区别。

创建类的实例时,其语法跟ObjC之外的语言一致了,通过“()”里的参数对应某个构造方法。我们没有为上面的类提供额外的构造方法,所以使用了默认的构造方法(没有任何参数的那个)。不论是使用属性还是调用成员(方法)函数,都用点即可。

类不必有父类,这点与ObjC不同,ObjC的类必须直接或间接从NSObject派生。

构造方法

构造方法的名字都叫“init”。

class Dog {    let name:String    var age:Int   init(){        self.name = "wang wang"        self.age = 10    }   init(name:String,age:Int){        self.name = name        self.age = age    }   func talk(){        print("我是一只单身狗")    }}

增加了2个构造方法,把属性的初始化移到构造方法中了,这跟上一个例子的初始化方式实质上没有区别。注意常量属性只能在构造方法中初始化一次。到底是使用哪个构造方法来初始化,这得看在创建类实例时传的参数。每个属性必须都要进行初始化。可以在声明它时,也可以在构造方法中。

self代表实例自身,相当于其它语言里的this。

析构方法

与构造方法对应,析构方法叫做“deinit”。在实例要被销毁前被调用。里面可以做一些清理工作。析构方法只能有一个且没有参数。例如:

class Dog {    let name:String    var age:Int   init(){        self.name = "wang wang"        self.age = 10    }   init(name:String,age:Int){        self.name = name        self.age = age    }   //析构方法,因为不需要参数,因此连“()”都不能带了    deinit{        print("看到这句话,就是我的死期,永别了世界")    }   func talk(){        print("我是一只单身狗")    }}
继承

//撸码狗

class CodingDog : Dog{    var CodingYears:Double    //构造方法    init(name:String,age:Int,CodingYears:Double){        self.CodingYears=CodingYears        super.init(name: name,age: age)    }    //重写了父类的方法    overrIDe func talk(){        print("我是一只撸码狗")    }}

冒号后面写父类的名字,就是继承了。继承就是有了它爹的属性和方法。构造方法中必须调用它爹的某个构造方法。super就代表它爹。并且必须先初始化了儿子的属性后才能调用爹的构造方法,这样规定是为了避免坑爹。

儿写重写了爹的方法,儿子必须标明overrIDe。如果没有,被视为语法错误。而如果在一个不是重写的方法上用了,也不允许。很好!避免了很多混乱。

上一篇:Swift快速入门之函数

总结

以上是内存溢出为你收集整理的Swift快速入门之对象和类全部内容,希望文章能够帮你解决Swift快速入门之对象和类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1077332.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存