標籤:
1,首先來看看如何在Swift中定義一個類和類裡面的屬性、建構函式、方法及類方法
import Foundationclass Hello{ //成員屬性 var _name:NSString?="jikexueyuan" //建構函式 init(){ } //重載建構函式 init(name:NSString){ _name = name } //方法 func sayHello(){ println("Hello \(_name)") } //類方法 class func sayHi(){ println("Hello Swift") }}var hello = Hello(name: "chen")hello.sayHello()Hello.sayHi()
2,在Swift中繼承是跟C#一樣使用冒號的形式來表示。一旦某個類繼承了它的父類,就同時有了父類的屬性和方法。在子類中可以重寫父類的方法也可以調用父類的方法。
class Hi:Hello { //重寫父類方法 override func sayHello() { super.sayHello()//調用父類方法 println("Hi \(_name)") }}var hi = Hi()hi.sayHello()
3,在程式編寫的過程中有的時候我們會使用到第三方類庫或者使用系統的類庫的時候,發現這些類庫中某些類需要擴充則可以使用extension關鍵詞來實現。若子類繼承帶有extension擴充的父類,相應的子類也應該會有擴充的方法。
//類的動態擴充extension Hi{ func sayHaha(){ println("Haha") }}hi.sayHaha()
4,在Swift中介面使用protocol關鍵字來定義
protocol Person{ func getName()->NSString}class Man: Person { func getName() -> NSString { return "jikexueyuan" }}var man = Man()var hiMan = Hi(name: man.getName())hiMan.sayHello()
5,在Swift中命名空間使用類的嵌套的方法去實現,但是當命名空間嵌套很複雜且命名空間裡的類會非常多的時候會顯得很臃腫。這個時候可以在一個Swift檔案中定義命名空間的嵌套,在另外一個Swift檔案中使用extension關鍵字來擴充命名空間,最後在使用到的檔案中直接調用就可以了。
//---Space.swiftclass com{ class jikexueyuan{ }}//---Hello.swiftextension com.jikexueyuan{ class Hello { func sayHello(){ println("Hello") } }}//---Hi.swiftextension com.jikexueyuan{ class Hi { func sayHi(){ println("Hi") } }}//---Main.swiftvar spaceHello = com.jikexueyuan.Hello()spaceHello.sayHello()var spaceHi = com.jikexueyuan.Hi()spaceHi.sayHi()
Swift物件導向詳解