class的屬性和方法

一阔拳、屬性

1脓钾、存儲屬性

存儲屬性就是存儲特定類的一個常量或者變量

//這里的name宾濒,age就是存儲屬性
struct Person{
    let name:String
    var age:Int
}

2帕翻、懶存儲屬性

懶存儲屬性是指第一次調(diào)用的時候才會計算其初始值的屬性宠进,通過lazy來標識

class Person{
    //假如這個類初始化的時候是耗時操作
}

class PersonInfo{
    //懶加載的話不用初始化p屬性的時候就穿件Person實例晕拆,可以等到用的時候再加載,
    //而且p并不是一定要用砰苍,這樣即可以節(jié)省時間潦匈,又可以節(jié)省內(nèi)存
    lazy var p = Person()
}

注意:必須將懶存儲屬性聲明成變量,因為屬性的值在實例構(gòu)造完成之前可能無法得到赚导,而常量屬性在構(gòu)造過程完成之前必須要有初始值茬缩,因此懶存儲屬性必須聲明為變量。

3吼旧、計算屬性

計算屬性不存儲值凰锡,而是提供了一個getter和setter來分別進行獲取值和設(shè)置其他屬性的值。getter圈暗、setter分別使用get掂为、set關(guān)鍵字進行定義。

class Person{
    //age是存儲屬性
    var age:Int = 18
    //height是計算屬性
    var height:Int
    {
        get{
            return 3;
        }
        set{
            age = newValue/2;
        }
    }
    //只讀計算屬性
    var height1:Int
    {
        get{
            return 3;
        }
    }
    //只讀屬性可以省略get
    var height2:Int
    {
        return 3;
    }
}
4员串、屬性觀察器

詳見swift下標腳本語法勇哗、willSet、didSet方法

5寸齐、類型屬性

類型屬性用關(guān)鍵字static標識欲诺,可用class代替static關(guān)鍵字。類型屬性屬于類用(類名.屬性)方式調(diào)用

class Person{
    static var age:Int = 18
}
print(Person.age)

二渺鹦、方法

實例方法由對象調(diào)用扰法,類型方法由類調(diào)用

1、實例方法
class Person{
    //無參無返回值
    func info(){
        print("hahaha")
    }
    //有參無返回值
    func info1(age:Int,name:String){
        print(age)
    }
    //無參有返回值
    func info2() -> String {
        return "我是返回值";
    }
    //有參有返回值
    func info3(name:String) -> String{
        return name;
    }
}

let p = Person()
p.info()
p.info1(age: 1, name: "我是名字")
print(p.info2())
print(p.info3(name: "我是info3"))

控制臺輸出值:

hahaha
1
我是返回值
我是info3
2毅厚、類型方法

類方法由類調(diào)用塞颁,僅此而已

class PersonInfo{
    static func sayHello(){
        print("hello")
    }
}
PersonInfo.sayHello()

控制臺輸出值:

hello

三、構(gòu)造函數(shù)

構(gòu)造函數(shù)是一種特殊的函數(shù),主要用來在創(chuàng)建對象時初始化對象祠锣,為對象的屬性設(shè)置初始值

Tips:Swift中類實例化之后酷窥,所有的存儲型屬性必須有值。

1锤岸、構(gòu)造函數(shù)基礎(chǔ)

創(chuàng)建類之后必定要實例化對象竖幔,現(xiàn)在有兩種方法設(shè)置初始值。

//方法一:定義屬性時賦初始值
class Person{
    var name:String = "我是張三"
    var age:Int = 16
}
var p = Person()
print(p.name)
//方法二:將屬性值設(shè)置為Optional
class Person{
    var name:String?
    var age:Int?
}
var p = Person()
p.name = "name"
print(p.name!)

觀察之后不難發(fā)現(xiàn)這兩種方法設(shè)置初始值費時費力是偷。由此引出構(gòu)造函數(shù)

import UIKit
class Teacher : NSObject{
    var name:String
    
    //重寫構(gòu)造函數(shù)
    override init(){
        name = "dadada"
        super.init()
    }
}
var t = Teacher()
//t.name = "大老師"
print(t.name)
2拳氢、重載構(gòu)造函數(shù)

重寫:子類繼承父類,重寫父類的方法
重載:當前類中方法名相同蛋铆,參數(shù)列表不同

class Student : NSObject{
    var name:String
    var age:Int
    //如果重載了構(gòu)造函數(shù)馋评,系統(tǒng)默認提供的構(gòu)造函數(shù)就不能再被訪問
    init(name:String, age:Int) {
        self.name = name
        self.age = age
    }
}
var s = Student(name:"zhng",age:14)
print(s.name)
3、指定構(gòu)造函數(shù)與便利構(gòu)造函數(shù)
//指定構(gòu)造函數(shù) 是類中最主要的構(gòu)造函數(shù)刺啦。一個指定構(gòu)造函數(shù)將初始化類中提供的所有屬性留特,并根據(jù)繼承鏈往上調(diào)用父類的構(gòu)造函數(shù)來實現(xiàn)父類的初始化
//便利構(gòu)造函數(shù)是類中比較次要的、輔助型的構(gòu)造函數(shù)玛瘸。蜕青。可以定義便利構(gòu)造函數(shù)來調(diào)用同一個類中的指定構(gòu)造函數(shù)糊渊,并為其參數(shù)提供默認值右核。
//便利構(gòu)造函數(shù)有以下幾個特點
//1、只有便利構(gòu)造函數(shù)中可以調(diào)用self.init()
//2渺绒、便利構(gòu)造函數(shù)不能被重寫或者使用super調(diào)用父類的構(gòu)造函數(shù)
//3贺喝、不能被繼承
class Per : NSObject{
    var name : String
    init(name:String) {
        self.name = name;
        super.init()
    }
    convenience override init() {
        self.init(name:"哈哈哈");
    }
    deinit {
        print("Per被銷毀了")
    }
}

四、析構(gòu)函數(shù)

在一個類的實例被釋放之前宗兼,析構(gòu)函數(shù)會被調(diào)用躏鱼。deinit無參 無返回值。

class Per : NSObject{
    var name : String
    init(name:String) {
        self.name = name;
        super.init()
    }
    convenience override init() {
        self.init(name:"哈哈哈");
    }
    deinit {
        print("Per被銷毀了")
    }
}
var pp:Per? = Per()
print(pp!.name)
pp = nil

控制臺返回如下:

哈哈哈
Per被銷毀了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殷绍,一起剝皮案震驚了整個濱河市染苛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌主到,老刑警劉巖殖侵,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镰烧,居然都是意外死亡,警方通過查閱死者的電腦和手機楞陷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門怔鳖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人固蛾,你說我怎么就攤上這事结执《嚷剑” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵献幔,是天一觀的道長懂傀。 經(jīng)常有香客問我,道長蜡感,這世上最難降的妖魔是什么蹬蚁? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮郑兴,結(jié)果婚禮上犀斋,老公的妹妹穿的比我還像新娘。我一直安慰自己情连,他們只是感情好叽粹,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著却舀,像睡著了一般虫几。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挽拔,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天辆脸,我揣著相機與錄音,去河邊找鬼篱昔。 笑死每强,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的州刽。 我是一名探鬼主播空执,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穗椅!你這毒婦竟也來了辨绊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤匹表,失蹤者是張志新(化名)和其女友劉穎门坷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袍镀,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡默蚌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苇羡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绸吸。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锦茁,到底是詐尸還是另有隱情攘轩,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布码俩,位于F島的核電站度帮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稿存。R本人自食惡果不足惜笨篷,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挠铲。 院中可真熱鬧冕屯,春花似錦、人聲如沸拂苹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢棒。三九已至浴韭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脯宿,已是汗流浹背念颈。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留连霉,地道東北人榴芳。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像跺撼,于是被迫代替她去往敵國和親窟感。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容