Swift写覚
<貧匯准
和匯准>
匯倖窃辛參写覚?inherit?総匯倖窃議圭隈?methods??奉來?property?才凪万蒙來。輝匯倖窃写覚凪万窃扮?写覚窃出徨窃?subclass??瓜写覚窃出階窃?賜幻窃?superclass?。壓 Swift 嶄?写覚頁曝蛍仝窃々嚥凪万窃侏議匯倖児云蒙尢。
壓 Swift 嶄?窃辛參距喘才恵諒階窃議圭隈?奉來才現奉重云?subscripts??旺拝辛參嶷亟?override?宸乂圭隈?奉來才現奉重云栖單晒賜俐個万断議佩葎。Swift 氏殊臥低議嶷亟協吶壓階窃嶄頁倦嗤謄塘議協吶?參緩鳩隠低議嶷亟佩葎頁屎鳩議。
辛參葎窃嶄写覚栖議奉來耶紗奉來鉱賀匂?property observer??宸劔匯栖?輝奉來峙個延扮?窃祥氏瓜宥岑欺。辛參葎販採奉來耶紗奉來鉱賀匂?涙胎万圻云瓜協吶葎贋刈侏奉來?stored property?珊頁柴麻侏奉來?computed property?。
更夛匂喘噐幹秀蝶倖窃侏議匯倖仟糞箭。勝砿更夛匂旺音頁圭隈?徽壓囂隈貧?曾宀載屢貌。更夛匂議垢恬頁彈姥仟糞箭參工聞喘?旺鳩隠糞箭嶄議侭嗤奉來脅啜嗤嗤丼議兜兵晒峙。
更夛匂議恷酒汽侘塀祥崧匯倖短嗤歌方議糞箭圭隈?聞喘init購囚忖?
Vehicle窃協吶阻概曽議慌揖蒙來?徽宸倖窃云附旺短湊寄喘侃。葎阻聞万厚葎糞喘?低俶勣序匯化聾晒万栖宙峰厚醤悶議概曽。
葎阻峺苧蝶倖窃議階窃?繍階窃兆亟壓徨窃兆議朔中?喘丹催蛍侯?
厘断辛參繍宸響恬?“協吶匯倖仟議窃出Bicycle?万写覚阻Vehicle議蒙來”?
Bicycle窃協吶阻匯倖更夛匂栖譜崔万協崙議蒙來?徭佩概峪嗤2倖態徨?。Bicycle議更夛匂距喘阻万幻窃Vehicle議更夛匂super.init()?參緩鳩隠壓Bicycle窃編夕俐個椎乂写覚栖議奉來念Vehicle窃厮将兜兵晒狛万断阻。
Bicycle音叙辛參写覚Vehicle議奉來?珊辛參写覚万議圭隈。泌惚低幹秀阻匯倖Bicycle窃議糞箭?低祥辛參距喘万写覚栖議description圭隈?旺拝辛參心欺?万補竃議奉來峙厮将窟伏阻延晒?
泌惚勣嶷亟蝶倖蒙來?低俶勣壓嶷亟協吶議念中紗貧override購囚忖。宸担恂?低祥燕苧阻低頁?戻工匯倖嶷亟井云?遇掲危列仇戻工阻匯倖屢揖議協吶。吭翌議嶷亟佩葎辛嬬氏擬崑音辛圓岑議危列?販採髪富override購囚忖議嶷亟脅氏壓園咎扮瓜寶僅葎危列。
override購囚忖氏戻佰 Swift 園咎匂肇殊臥乎窃議階窃?賜凪嶄匯倖幻窃?頁倦嗤謄塘嶷亟井云議蕗苧。宸倖殊臥辛參鳩隠低議嶷亟協吶頁屎鳩議。
壓栽癖議仇圭?低辛參宥狛聞喘super念弸栖恵諒階窃井云議圭隈?奉來賜現奉重云?
和中議箭徨協吶阻Vehicle議匯倖仟議徨窃?出Car?万嶷亟阻貫Vehicle窃写覚栖議description圭隈?
Car嶷亟阻写覚栖議description圭隈?万議蕗苧嚥Vehicle嶄議description圭隈匯崑?蕗苧念中紗貧阻override購囚忖。
Car嶄議description圭隈旺掲頼畠徭協吶?遇頁宥狛super.description聞喘阻階窃Vehicle嶄議description圭隈?隼朔壅弖紗匯乂駆翌議佚連?曳泌廿概議輝念堀業。
泌惚低幹秀匯倖Car議仟糞箭?旺嬉咫description圭隈議補竃?低祥氏窟孖宙峰佚連厮将窟伏阻個延?
低辛參繍匯倖写覚栖議峪響奉來嶷亟葎匯倖響亟奉來?峪俶勣低壓嶷亟井云議奉來戦戻工 getter 才 setter 軸辛。徽頁?低音辛參繍匯倖写覚栖議響亟奉來嶷亟葎匯倖峪響奉來。
泌惚低晦編繍SpeedLimitedCar糞箭議speed奉來譜崔葎匯倖寄噐40mph議方?隼朔嬉咫description痕方議補竃?低氏窟孖堀業瓜尫崙壓40mph?
泌惚低嶷亟阻final圭隈?奉來賜現奉重云?壓園咎扮氏烏危。壓制婢嶄?低耶紗欺窃戦議圭隈?奉來賜現奉重云匆辛參壓制婢議協吶戦炎芝葎 final。
低辛參宥狛壓購囚忖class念耶紗@final蒙來?@final class?栖繍屁倖窃炎芝葎 final 議?宸劔議窃頁音辛瓜写覚議?倦夸氏烏園咎危列。
壓 Swift 嶄?窃辛參距喘才恵諒階窃議圭隈?奉來才現奉重云?subscripts??旺拝辛參嶷亟?override?宸乂圭隈?奉來才現奉重云栖單晒賜俐個万断議佩葎。Swift 氏殊臥低議嶷亟協吶壓階窃嶄頁倦嗤謄塘議協吶?參緩鳩隠低議嶷亟佩葎頁屎鳩議。
辛參葎窃嶄写覚栖議奉來耶紗奉來鉱賀匂?property observer??宸劔匯栖?輝奉來峙個延扮?窃祥氏瓜宥岑欺。辛參葎販採奉來耶紗奉來鉱賀匂?涙胎万圻云瓜協吶葎贋刈侏奉來?stored property?珊頁柴麻侏奉來?computed property?。
協吶匯倖児窃?Base class?
音写覚噐凪万窃議窃?各岻葎児窃?base calss?。廣吭?Swift 嶄議窃旺音頁貫匯倖宥喘議児窃写覚遇栖。泌惚低音葎低協吶議窃峺協匯倖階窃議三?宸倖窃祥徭強撹葎児窃。和中議箭徨協吶阻匯倖出Vehicle議児窃。宸倖児窃蕗苧阻曾倖斤侭嗤概曽脅宥喘議奉來?numberOfWheels才maxPassengers?。宸乂奉來壓description圭隈嶄聞喘?宸倖圭隈卦指匯倖String窃侏議?斤概曽蒙尢議宙峰?
class Vehicle {
var numberOfWheels: Int
var maxPassengers: Int
func description() -> String {
return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers"
}
init() {
numberOfWheels = 0
maxPassengers = 1
}
}
Vehicle窃協吶阻更夛匂?initializer?栖譜崔奉來議峙。更夛匂氏壓更夛狛殻匯准嶄峋聾初府?宸戦厘断恂匯和酒汽初府?參宴噐讐盾徨窃嶄写覚栖議奉來泌採瓜俐個。更夛匂喘噐幹秀蝶倖窃侏議匯倖仟糞箭。勝砿更夛匂旺音頁圭隈?徽壓囂隈貧?曾宀載屢貌。更夛匂議垢恬頁彈姥仟糞箭參工聞喘?旺鳩隠糞箭嶄議侭嗤奉來脅啜嗤嗤丼議兜兵晒峙。
更夛匂議恷酒汽侘塀祥崧匯倖短嗤歌方議糞箭圭隈?聞喘init購囚忖?
init() {
// 峇佩更夛狛殻
}
泌惚勣幹秀匯倖Vehicle窃議仟糞箭?聞喘更夛匂囂隈距喘貧中議兜兵晒匂?軸窃兆朔中効匯倖腎議弌凄催?let someVehicle = Vehicle()宸倖Vehicle窃議更夛匂葎販吭議匯曽概譜崔匯乂兜兵晒奉來峙?numberOfWheels = 0才maxPassengers = 1?。
Vehicle窃協吶阻概曽議慌揖蒙來?徽宸倖窃云附旺短湊寄喘侃。葎阻聞万厚葎糞喘?低俶勣序匯化聾晒万栖宙峰厚醤悶議概曽。
徨窃伏撹?Subclassing?
徨窃伏撹?Subclassing?峺議頁壓匯倖厮嗤窃議児粥貧幹秀匯倖仟議窃。徨窃写覚階窃議蒙來?旺拝辛參單晒賜個延万。低珊辛參葎徨窃耶紗仟議蒙來。葎阻峺苧蝶倖窃議階窃?繍階窃兆亟壓徨窃兆議朔中?喘丹催蛍侯?
class SomeClass: SomeSuperclass {
// 窃議協吶
}
和匯倖箭徨?協吶匯倖厚醤悶議概曽窃出Bicycle。宸倖仟窃頁壓 Vehicle窃議児粥貧幹秀軟栖。咀緩低俶勣繍Vehicle窃慧壓Bicycle窃朔中?喘丹催蛍侯。厘断辛參繍宸響恬?“協吶匯倖仟議窃出Bicycle?万写覚阻Vehicle議蒙來”?
class Bicycle: Vehicle {
init() {
super.init()
numberOfWheels = 2
}
}
Bicycle頁Vehicle議徨窃?Vehicle頁Bicycle議階窃。仟議Bicycle窃徭強資誼Vehicle窃議蒙來?曳泌maxPassengers才numberOfWheels奉來。低辛參壓徨窃嶄協崙宸乂蒙來?賜耶紗仟議蒙來栖厚挫仇宙峰Bicycle窃。Bicycle窃協吶阻匯倖更夛匂栖譜崔万協崙議蒙來?徭佩概峪嗤2倖態徨?。Bicycle議更夛匂距喘阻万幻窃Vehicle議更夛匂super.init()?參緩鳩隠壓Bicycle窃編夕俐個椎乂写覚栖議奉來念Vehicle窃厮将兜兵晒狛万断阻。
廣吭?音崧 Objective-C?壓 Swift 嶄?兜兵晒匂潮範頁音写覚議?需兜兵晒匂議写覚嚥嶷亟Vehicle窃嶄maxPassengers議潮範峙斤徭佩概栖傍厮将頁屎鳩議?咀緩壓Bicycle議更夛匂嶄旺短嗤個延万。遇numberOfWheels圻栖議峙斤徭佩概栖傍頁音屎鳩議?咀緩壓兜兵晒匂嶄繍万厚個葎 2。
Bicycle音叙辛參写覚Vehicle議奉來?珊辛參写覚万議圭隈。泌惚低幹秀阻匯倖Bicycle窃議糞箭?低祥辛參距喘万写覚栖議description圭隈?旺拝辛參心欺?万補竃議奉來峙厮将窟伏阻延晒?
let bicycle = Bicycle()
println("Bicycle: \(bicycle.description())")
// Bicycle: 2 wheels; up to 1 passengers
徨窃珊辛參写偬瓜凪万窃写覚?
class Tandem: Bicycle {
init() {
super.init()
maxPassengers = 2
}
}
貧中議箭徨幹秀阻Bicycle議匯倖徨窃?褒繁徭佩概?tandem?。Tandem貫Bicycle写覚阻曾倖奉來?遇宸曾倖奉來頁Bicycle貫Vehicle写覚遇栖議。Tandem旺音俐個態徨議方楚?咀葎万挽頁匯曽徭佩概?嗤 2 倖態徨。徽万俶勣俐個maxPassengers議峙?咀葎褒繁徭佩概辛參恫曾倖繁。廣吭?徨窃峪塋俯俐個貫階窃写覚栖議延楚奉來?遇音嬬俐個写覚栖議械楚奉來。幹秀匯倖Tandem窃議糞箭?嬉咫万議宙峰?軸辛心欺万議奉來厮瓜厚仟?
let tandem = Tandem()
println("Tandem: \(tandem.description())")
// Tandem: 2 wheels; up to 2 passengers
廣吭?Tandem窃匆写覚阻description圭隈。匯倖窃議糞箭圭隈氏瓜宸倖窃議侭嗤徨窃写覚。嶷亟?Overriding?
徨窃辛參葎写覚栖議糞箭圭隈?instance method??窃圭隈?class method??糞箭奉來?instance property??賜現奉重云?subscript?戻工徭失協崙議糞孖?implementation?。厘断委宸嶽佩葎出嶷亟?overriding?。泌惚勣嶷亟蝶倖蒙來?低俶勣壓嶷亟協吶議念中紗貧override購囚忖。宸担恂?低祥燕苧阻低頁?戻工匯倖嶷亟井云?遇掲危列仇戻工阻匯倖屢揖議協吶。吭翌議嶷亟佩葎辛嬬氏擬崑音辛圓岑議危列?販採髪富override購囚忖議嶷亟脅氏壓園咎扮瓜寶僅葎危列。
override購囚忖氏戻佰 Swift 園咎匂肇殊臥乎窃議階窃?賜凪嶄匯倖幻窃?頁倦嗤謄塘嶷亟井云議蕗苧。宸倖殊臥辛參鳩隠低議嶷亟協吶頁屎鳩議。
恵諒階窃議圭隈?奉來式現奉重云
輝低壓徨窃嶄嶷亟階窃議圭隈?奉來賜現奉重云扮?嗤扮壓低議嶷亟井云嶄聞喘厮将贋壓議階窃糞孖氏寄嗤駸吩。曳泌?低辛參單晒厮嗤糞孖議佩葎?賜壓匯倖写覚栖議延楚嶄贋刈匯倖俐個狛議峙。壓栽癖議仇圭?低辛參宥狛聞喘super念弸栖恵諒階窃井云議圭隈?奉來賜現奉重云?
- 壓圭隈someMethod議嶷亟糞孖嶄?辛參宥狛super.someMethod()栖距喘階窃井云議someMethod圭隈。
- 壓奉來someProperty議 getter 賜 setter 議嶷亟糞孖嶄?辛參宥狛super.someProperty栖恵諒階窃井云議someProperty奉來。
- 壓現奉重云議嶷亟糞孖嶄?辛參宥狛super[someIndex]栖恵諒階窃井云嶄議屢揖現奉重云。
嶷亟圭隈
壓徨窃嶄?低辛參嶷亟写覚栖議糞箭圭隈賜窃圭隈?戻工匯倖協崙賜紋旗議圭隈糞孖。和中議箭徨協吶阻Vehicle議匯倖仟議徨窃?出Car?万嶷亟阻貫Vehicle窃写覚栖議description圭隈?
class Car: Vehicle {
var speed: Double = 0.0
init() {
super.init()
maxPassengers = 5
numberOfWheels = 4
}
override func description() -> String {
return super.description() + "; "
+ "traveling at \(speed) mph"
}
}
Car蕗苧阻匯倖仟議贋刈侏奉來speed?万頁Double窃侏議?潮範峙頁0.0?燕幣“扮堀頁0哂戦”。Car嗤徭失議兜兵晒匂?万繍核人議恷寄方楚譜葎5?態徨方楚譜葎4。Car嶷亟阻写覚栖議description圭隈?万議蕗苧嚥Vehicle嶄議description圭隈匯崑?蕗苧念中紗貧阻override購囚忖。
Car嶄議description圭隈旺掲頼畠徭協吶?遇頁宥狛super.description聞喘阻階窃Vehicle嶄議description圭隈?隼朔壅弖紗匯乂駆翌議佚連?曳泌廿概議輝念堀業。
泌惚低幹秀匯倖Car議仟糞箭?旺嬉咫description圭隈議補竃?低祥氏窟孖宙峰佚連厮将窟伏阻個延?
let car = Car()
println("Car: \(car.description())")
// Car: 4 wheels; up to 5 passengers; traveling at 0.0 mph
嶷亟奉來
低辛參嶷亟写覚栖議糞箭奉來賜窃奉來?戻工徭失協崙議getter才setter?賜耶紗奉來鉱賀匂聞嶷亟議奉來鉱賀奉來峙焚担扮昨窟伏個延。嶷亟奉來議Getters才Setters
低辛參戻工協崙議 getter?賜 setter?栖嶷亟販吭写覚栖議奉來?涙胎写覚栖議奉來頁贋刈侏議珊頁柴麻侏議奉來。徨窃旺音岑祇写覚栖議奉來頁贋刈侏議珊頁柴麻侏議?万峪岑祇写覚栖議奉來氏嗤匯倖兆忖才窃侏。低壓嶷亟匯倖奉來扮?駅俶繍万議兆忖才窃侏脅亟竃栖。宸劔嘉嬬聞園咎匂肇殊臥低嶷亟議奉來頁嚥階窃嶄揖兆揖窃侏議奉來屢謄塘議。低辛參繍匯倖写覚栖議峪響奉來嶷亟葎匯倖響亟奉來?峪俶勣低壓嶷亟井云議奉來戦戻工 getter 才 setter 軸辛。徽頁?低音辛參繍匯倖写覚栖議響亟奉來嶷亟葎匯倖峪響奉來。
廣吭?泌惚低壓嶷亟奉來嶄戻工阻 setter?椎担低匆匯協勣戻工 getter。泌惚低音?壓嶷亟井云嶄議 getter 戦俐個写覚栖議奉來峙?低辛參岷俊卦指super.someProperty栖卦指写覚栖議峙。屎泌和中議SpeedLimitedCar議箭徨侭幣。參和議箭徨協吶阻匯倖仟窃?出SpeedLimitedCar?万頁Car議徨窃。窃SpeedLimitedCar燕幣芦廾阻尫堀廾崔議概?万議恷互堀業峪嬬器欺40mph。低辛參宥狛嶷亟写覚栖議speed奉來栖糞孖宸倖堀業尫崙?
class SpeedLimitedCar: Car {
override var speed: Double {
get {
return super.speed
}
set {
super.speed = min(newValue, 40.0)
}
}
}
輝低譜崔匯倖SpeedLimitedCar糞箭議speed奉來扮?奉來setter議糞孖氏肇殊臥仟峙嚥尫崙峙40mph議寄弌?万氏繍階窃議speed譜崔葎newValue才40.0嶄熟弌議椎倖。宸曾倖峙陳倖熟弌喇min痕方畳協?万頁Swift炎彈垂嶄議匯倖畠蕉痕方。min痕方俊辺曾倖賜厚謹議方?卦指凪嶄恷弌議椎倖。泌惚低晦編繍SpeedLimitedCar糞箭議speed奉來譜崔葎匯倖寄噐40mph議方?隼朔嬉咫description痕方議補竃?低氏窟孖堀業瓜尫崙壓40mph?
let limitedCar = SpeedLimitedCar()
limitedCar.speed = 60.0
println("SpeedLimitedCar: \(limitedCar.description())")
// SpeedLimitedCar: 4 wheels; up to 5 passengers; traveling at 40.0 mph
嶷亟奉來鉱賀匂?Property Observer?
低辛參壓奉來嶷亟嶄葎匯倖写覚栖議奉來耶紗奉來鉱賀匂。宸劔匯栖?輝写覚栖議奉來峙窟伏個延扮?低祥氏瓜宥岑欺?涙胎椎倖奉來圻云頁泌採糞孖議。購噐奉來鉱賀匂議厚謹坪否?萩心奉來鉱賀匂。廣吭?低音辛參葎写覚栖議械楚贋刈侏奉來賜写覚栖議峪響柴麻侏奉來耶紗奉來鉱賀匂。宸乂奉來議峙頁音辛參瓜譜崔議?侭參?葎万断戻工willSet賜didSet糞孖頁音如輝。緩翌珊勣廣吭?低音辛參揖扮戻工嶷亟議 setter 才嶷亟議奉來鉱賀匂。泌惚低?鉱賀奉來峙議延晒?旺拝低厮将葎椎倖奉來戻工阻協崙議 setter?椎担低壓 setter 嶄祥辛參鉱賀欺販採峙延晒阻。和中議箭徨協吶阻匯倖仟窃出AutomaticCar?万頁Car議徨窃。AutomaticCar燕幣徭強飢廿概?万辛參功象輝念議堀業徭強僉夲栽癖議飢了。AutomaticCar匆戻工阻協崙議description圭隈?辛參補竃輝念飢了。
class AutomaticCar: Car {
var gear = 1
override var speed: Double {
didSet {
gear = Int(speed / 10.0) + 1
}
}
override func description() -> String {
return super.description() + " in gear \(gear)"
}
}
輝低譜崔AutomaticCar議speed奉來?奉來議didSet鉱賀匂祥氏徭強仇譜崔gear奉來?葎仟議堀業僉夲匯倖栽癖議飢了。醤悶栖傍祥頁?奉來鉱賀匂繍仟議堀業峙茅參10?隼朔?和函誼恷俊除議屁方峙?恷朔紗1栖誼欺亀了gear議峙。箭泌?堀業葎10.0扮?飢了葎1?堀業葎35.0扮?飢了葎4?
let automatic = AutomaticCar()
automatic.speed = 35.0
println("AutomaticCar: \(automatic.description())")
// AutomaticCar: 4 wheels; up to 5 passengers; traveling at 35.0 mph in gear 4
契峭嶷亟
低辛參宥狛委圭隈?奉來賜現奉重云炎芝葎final栖契峭万断瓜嶷亟?峪俶勣壓蕗苧購囚忖念紗貧@final蒙來軸辛。?箭泌?@final var, @final func, @final class func, 參式 @final subscript?泌惚低嶷亟阻final圭隈?奉來賜現奉重云?壓園咎扮氏烏危。壓制婢嶄?低耶紗欺窃戦議圭隈?奉來賜現奉重云匆辛參壓制婢議協吶戦炎芝葎 final。
低辛參宥狛壓購囚忖class念耶紗@final蒙來?@final class?栖繍屁倖窃炎芝葎 final 議?宸劔議窃頁音辛瓜写覚議?倦夸氏烏園咎危列。
<貧匯准
和匯准>