Swift-重写与重载的使用和比较
2016-11-28 20:24
148 查看
1、重载:
函数名相同,参数名/参数类型/参数个数不同重载函数并不仅仅局限于构造函数
函数重载是面相对象程序设计语言的重要标志
OC 不支持函数重载,OC 的替代方式是 withXXX…
2、重写:
也叫覆盖,指在子类中定义一个与父类中方法同名同参数列表的方法。重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
因为子类会继承父类的方法,而重写就是将从父类继承过来的方法重新定义一次,重新填写方法中的代码。
重写必须继承,重载不用
假设有一个Person类,用于 “name” 和 “age” 两个属性,我们分别用重写和重载方法为其添加属性
创建Person类
class Person: NSObject { var name: String // 姓名 var age: Int // 年龄 // 构造函数 init(name: String,age: Int) { self.name = name self.age = age // 必须在 super.init() 之前 初始化对象 super.init() } }
通过重写方法为其添加 “lesson” 属性
class Student: Person { var lesson: String /// 重写 /// /// - Parameters: /// - name: 姓名 /// - age: 年龄 override init(name: String, age: Int) { lesson = "Python" // 必须放在super.init()之前 super.init(name: name, age: age) } }
/// 重写实例化的对象 let s = Student(name: "Joyce", age: 18) print(s.lesson) // Python
通过重载方法为其添加 “lesson” 属性
class Student: Person { var lesson: String /// 重载 /// /// - Parameters: /// - name: 姓名 /// - age: 年龄 /// - lesson: 课程 init(name: String, age: Int, lesson:String) { self.lesson = lesson super.init(name: name, age: age) } }
/// 重载实例化的对象 let s1 = Student(name: "帅哥", age: 21, lesson: "HTML 5") print(s1.lesson) // HTML 5
总结:
通过重载,可以快速为方法添加新的属性,属性可以通过外部传入重写,只能在方法内部设置属性,外部无法直观看到类的参数列表
相关文章推荐
- Swift中重写和重载的使用与对比总结
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- C#基础篇 重写与重载,以及其中设计的虚方法和抽象方法的使用和区别
- C#--第2周实验--任务13--创建一个抽象类A,创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串。
- Uber使用Swift重写APP的踩坑经历及解决方案(转载)
- 关于重载和重写(覆盖)的比较
- Swift中 覆盖(重写),重构,重载的区别
- 方法重载、方法重写、构造方法的含义及使用 方法重载、方法重写、构造方法的含义及使用
- C#第2次试验(1).创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串。
- swift 重载 泛式 inout的使用
- Java学习之方法重载和方法重写(覆盖)比较
- Chapter12——请比较函数重载和虚函数在概念上和使用方式有什么区别
- C++拷贝构造函数的调用时机,如没有重载等号操作符,需重写使用深拷贝
- C#基础篇 重写与重载,以及其中设计的虚方法和抽象方法的使用和区别
- Swift语法基础:14 - Swift的字符使用, 计算数量, 连接字符串和字符, 字符串插值, 比较字符串
- 8.方法重载和方法重写比较
- swift新建类和子类方法的重写与重载
- java重载/重写(覆盖)/重构比较及其与C++差异
- Java中方法的重写(override)和重载(overload)的使用规则总结:
- 创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得