import Foundation
class Hello{
var _name:String?="swift global"
init(name:String){ //定義類中有參數的構造方法
_name=name;
println("Hello , \(name)");
}
init(){ //定義類中無參數的構造方法
println("this is init method");
}
func sayHello(){ //定義成員方法
println("hello \(_name)")
}
class func meClass(){ //定義類方法
println("this is class method");
}
}
class Hi:Hello{
override func sayHello() { //繼承Hello類,並重載 其成員方法
super.sayHello() //調用父類的方法
println("hloo override \(_name)");
}
}
class HiChild:Hi{} //繼承Hi類
extension Hi{ //動態擴展 Hi 類,增加一個成員方法, 繼承了Hi 類的子類也可以調用這個方法
func sayHaha(){
println("HHHaaa");
}
}
var h1 = Hello() //實例Hello類,調用無參的init方法 ,輸出this is init method
var h2 = Hello(name:"Hello init") //調用有參的init方法,輸出:Hello , Hello init
var hi = Hi() //實例化子類,會調用父類的無參構造方法,輸出this is init method
hi.sayHello() //調用類的方法,輸出hello Optional("swift global") 和 hloo override Optional("swift global")
var h3 = HiChild() //實例化,調用父類的父類的構造方法,輸出this is init method
h3.sayHaha() //父類擴展了一個方法,則其子類可以調用這個方法,輸出 HHHaaa
h3.sayHello() //調用父類的方法,輸出hello Optional("swift global") 和 hloo override Optional("swift global")
Hello.meClass() //調用類方法,輸出this is class method
接口
protocol People{ //protocal 定義一個接口
func getName()->String //接口中申明一個方法,該方法返回一個字符串
}
class Man:People { //實現該接口
func getName() -> String { //實現接口的類 必須實現接口中所有的方法
return "zhangsan"
}
}
var m = Man()
println("Name is \(m.getName())")