和object-c一样swift的三大特性同为封装,继承,多态
封装
继承
- 重写方法
- 重载方法
- 参数名相同,参数个数不同
- 参数名相同,参数类型不同
*当父类继承NSObject时class Person{ func text() { print("person") } } class Stu:Person{ //重写 //完全覆盖 override func text() { print("Stu") } //重载 func chongzai(a:Int) -> Int { return a } //参数个数不同 func chongzai(a:Int,b:Int) -> Int { return a+b } //参数不同-返回值类型不同 //使用:一定要注意,明确的告诉编译器,拿什么类型的变量接收函数的值,为了确定返回值,让编译器知道要调用那个函数才可以 func chongzai(a:Int) -> Double { return 0.2 } func chongzai(a:Double) -> Int { return 1 } } let s = Stu() s.text() let result:Double = s.chongzai(a: 1) let result2:Int = s.chongzai(a: 1)
//继承nsobject就代表这个类以后有可能被转换oc代码 class Person :NSObject{ func text() { print("person") } } class Stu:Person{ //重载 func chongzai(a:Int) -> Int { return a } @objc(chongzai:) func chongzai(a:Double) -> Int { return 1 } //在OC中以上两种函数会被转化成方法 //- (NSInteger)chongzaiWithA:(NSInteger)a //- (NSInteger)chongzaiWithA:(Double)a //在OC中不允许参数名相同的方法所以天所以添加@objc修改方法名为chongzai }
多态
- 父类指针指向子类,来调用子类方法
- 多态的前提是继承
网友评论