swift面相對(duì)象的基礎(chǔ)<一>

面向?qū)ο蟮暮诵氖穷?lèi)和對(duì)象,面向?qū)ο蟮娜筇卣鳎悍庋b个榕,繼承和多肽篡石。swift可以定義枚舉,結(jié)構(gòu)體和類(lèi)三種面向?qū)ο蟮膶?shí)例西采,支持定義存儲(chǔ)屬性凰萨,計(jì)算屬性,方法,下標(biāo)胖眷,構(gòu)造器和嵌套類(lèi)型

這次說(shuō)的是枚舉武通,結(jié)構(gòu)體和類(lèi)的相關(guān)知識(shí)

枚舉

//用于管理一組有限值的集合

/*
 swift 定義枚舉的語(yǔ)法格式
 
 enum 枚舉名 {
 //使用case關(guān)鍵字列出所有的枚舉值
 //枚舉的其它成員
 }
 */
//定義枚舉
enum season {
    case spring
    case summer
    case fall
    case winter
}

//1.使用一個(gè)case來(lái)列舉所有的值
enum season2 {
    case spring, summer, fall, winter
}

//2.使用枚舉來(lái)聲明變量
var weather: season
weather = season.spring//或者表示稱(chēng).spring
print(weather)


//枚舉和swift語(yǔ)句之間的聯(lián)系
var chooseday = season.fall
switch chooseday{
case .spring :
    print("春天")
case .summer :
    print("夏天")
case .fall :
    print("秋天")
default :
    print("在家")//若是列出了season所有的枚舉值,default可以省略
}

//為每一個(gè)枚舉值賦值珊搀,即為原始值
/*
 原始值的語(yǔ)法格式:
 enum 枚舉值 : 原始值類(lèi)型 {
 case 枚舉值 = 原始值
 }
 在swift中不需要為每個(gè)枚舉值指定原始值冶忱,它可以根據(jù)已經(jīng)存在的原始值推斷出前后的枚舉值的原始
 值。這是用于原始值是整形的情況境析,如果原始值是字符串囚枪,或者是字符,就需要完全指定原始值劳淆。
 */

enum weekday: Int {
    case mon , tur , wen = 3,thur, fri , sat , sun
}

enum season3 : Character {
    case spring = "春"
    case summer = "夏"
    case fall = "秋"
    case winter = "冬"
}

//獲取枚舉中的原始值
print(weekday.fri.rawValue)//rawValue獲取原始值

//如何根據(jù)原始值獲取枚舉值
var myseason = season3(rawValue: "春")
if myseason != nil {
    switch (myseason) {
//    case .spring :
//        print("春天")
//    case .summer :
//        print("夏天")
    default :
        print("")
    }
}

//為枚舉成員定義關(guān)聯(lián)值
/*
 swift不要求每一個(gè)成員擁有相同的關(guān)聯(lián)值
 使用枚舉值的時(shí)候也要指定她的關(guān)聯(lián)值
 */
enum planet {
    case earth(weight: Double , name: String)
    case mars(density: Double , name: String, weight: CGFloat)
    case venus(Double , String)
    case saturn
    case neptune
}
var p1 = planet.earth(weight: 1.0, name: "地球")
var p2 = planet.venus(0.815, "金星")
var p3 = planet.mars(density: 3.0, name: "火星", weight: 0.1)

//獲取關(guān)聯(lián)值
switch (p3) {
    //將關(guān)聯(lián)值綁定到變量或者常量來(lái)提取
case planet.earth(var weight , var name):
    print(weight, name)
    //將關(guān)聯(lián)值都提取為常量或者變量链沼,直將一個(gè)var或者let放置枚舉成員之前
case let planet.mars(density: d, name : n, weight: w):
    print(d,n,w)
default:
    break
}

類(lèi)和結(jié)構(gòu)體

//類(lèi)和結(jié)構(gòu)體
/*
 定義類(lèi)和結(jié)構(gòu)體,創(chuàng)建實(shí)例沛鸵,值類(lèi)型與引用類(lèi)型括勺。
 類(lèi)和結(jié)構(gòu)體是很相似的,區(qū)別就是:結(jié)構(gòu)體不支持繼承谒臼,不支持定義構(gòu)造器朝刊。
 */

//類(lèi)
/*
 [修飾符]class 類(lèi)名{
 0到多個(gè)構(gòu)造器//初始化方法
 0到多個(gè)屬性
 0到多個(gè)方法
 0到多個(gè)下標(biāo)
 }
 修飾符可以是 private public internal final
 */
/*
 定義結(jié)構(gòu)體的語(yǔ)法
 [修飾符]struct 結(jié)構(gòu)體名{
 
 }
 修飾符可以是 private public internal final
 */

/*
 存儲(chǔ)屬性的語(yǔ)法
 [修飾符]var 或者 let 存儲(chǔ)屬性名:類(lèi)型名字 = 初始值
 */

/*
 定義構(gòu)造器的語(yǔ)法
 [修飾符] init(形參列表){
 0到多行可執(zhí)行語(yǔ)句組成的構(gòu)造器執(zhí)行體
 }
 */

/*
 定義方法的語(yǔ)法
 [修飾符]func 方法名(形參列表)-> 返回值類(lèi)型 {
 //0到多行可執(zhí)行語(yǔ)句
 }
 */

//定義一個(gè)person類(lèi)
class person {
    var name : String = "jack"
    var age : Int = 0
    func say (content: String){
        print(content)
    }
}

struct dog {
    var name : String
    var age : Int
    func run(){
        print("")
    }
}

//創(chuàng)建person類(lèi)的實(shí)例,它是引用類(lèi)型
var p: person
p = person()//var p = person(),p只是一個(gè)引用變量蜈缤,并沒(méi)有包含響應(yīng)的屬性數(shù)據(jù)
print(p.name)
p.say(content: "hello swift")

//創(chuàng)建結(jié)構(gòu)體的實(shí)例,它是值類(lèi)型
var dog1 = dog(name: "玩彩", age: 12)
print(dog1.name)

//內(nèi)存中的對(duì)像可以有多個(gè)引用拾氓,即多個(gè)引用變量指向同一個(gè)對(duì)象
var p2 = p
p2.name = "rose"
print(p.name)

//值類(lèi)型,創(chuàng)建dog實(shí)例時(shí)底哥,這個(gè)變量就存儲(chǔ)了dog實(shí)例;
//若是把dog實(shí)例賦給另外一個(gè)變量咙鞍,系統(tǒng)會(huì)將dog實(shí)例進(jìn)行復(fù)制,不會(huì)影響原有的變量
var dog2 = dog1
dog2.name = "snoppy"
print(dog2.name)
print(dog1.name)

如何選擇類(lèi)和結(jié)構(gòu)體

/*
 了解引用類(lèi)型的比較
 self關(guān)鍵字的使用
 類(lèi)和結(jié)構(gòu)體的選擇
 */

//引用類(lèi)型的比較
class user {
    var name : String
    var age : Int
    init (name :String , age : Int){
        self.name = name
        self.age = age
    }
}

var u1 = user(name : "han",age: 32)
var u2 = user(name : "han",age: 32)

//通過(guò)運(yùn)算符比較是否指向同一個(gè)類(lèi)型的實(shí)例趾徽,返回Bool變量
print(u1 === u2)
print(u1 !== u2)

var u3 = u1
print(u3 === u1)

//self關(guān)鍵詞
/*
 1.構(gòu)造器中的self代表該構(gòu)造器正在初始化的實(shí)例
 2.方法中的self代表該方法的調(diào)用者
 */
class dog {
    func jump(){
        print("正在執(zhí)行jump方法")
    }
    func run(){
        self.jump()
        print("正在執(zhí)行run")
    }
}

class person {
    var name : String = ""
    var age : Int = 2
    //顯示定義帶參數(shù)的構(gòu)造器
    init(name: String, age : Int){
        self.name = name
        self.age = age
    }
    
    //定義一個(gè)info方法
    func info (){
        print("\(name),\(age)")
    }
}

var person1 = person(name: "lily", age: 12)
person1.info()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末续滋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子孵奶,更是在濱河造成了極大的恐慌疲酌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件了袁,死亡現(xiàn)場(chǎng)離奇詭異朗恳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)载绿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)粥诫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人崭庸,你說(shuō)我怎么就攤上這事怀浆∫昵簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵执赡,是天一觀的道長(zhǎng)镰踏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搀玖,這世上最難降的妖魔是什么余境? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮灌诅,結(jié)果婚禮上芳来,老公的妹妹穿的比我還像新娘。我一直安慰自己猜拾,他們只是感情好即舌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著挎袜,像睡著了一般顽聂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盯仪,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天紊搪,我揣著相機(jī)與錄音,去河邊找鬼全景。 笑死耀石,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爸黄。 我是一名探鬼主播滞伟,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炕贵!你這毒婦竟也來(lái)了梆奈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤称开,失蹤者是張志新(化名)和其女友劉穎亩钟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鳖轰,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡清酥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脆霎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片总处。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狈惫,死狀恐怖睛蛛,靈堂內(nèi)的尸體忽然破棺而出鹦马,到底是詐尸還是另有隱情,我是刑警寧澤忆肾,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布荸频,位于F島的核電站,受9級(jí)特大地震影響客冈,放射性物質(zhì)發(fā)生泄漏旭从。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一场仲、第九天 我趴在偏房一處隱蔽的房頂上張望和悦。 院中可真熱鬧,春花似錦渠缕、人聲如沸鸽素。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)馍忽。三九已至,卻和暖如春燕差,著一層夾襖步出監(jiān)牢的瞬間遭笋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工徒探, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓦呼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓刹帕,卻偏偏與公主長(zhǎng)得像吵血,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子偷溺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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