1. 重载,函数名相同,参数名/参数类型/参数个数不同
1.1 重载函数并不仅仅局限于构造函数
1.2 函数重载是面相对象程序设计语言的重要标志
1.3 OC 不支持函数重载,OC 的替代方式是 withXXX...
2. 重写,子类需要在父类拥有方法的基础上进行扩展,需要 override 关键字
3. 创建Person.swift 对象
/**
构造函数
1.给属性分配空间
2.设置初始数值
重载: OC 中没有重载的概念
函数名相同,参数的个数&类型不同,叫做重载,是面向对象设计语言必备标志
OC 中使用 initWithXXX的方式 替代重载
*/
class Person: NSObject {
var name: String
var age: Int
// override init(){
// print("Person init")
// name = "zhangsan"
// age = 18
// super.init()
// }
//‘重载的’构造函数,只要是构造函数,就需要给属性设置初始值
//注意:如果重写了构造函数,系统默认提供的构造函数 init(),就不能再被访问
init(name: String, age: Int){
self.name = name
self.age = age
}
}
4. 创建Student.swift 对象,并继承 Person.swift
class Student: Person {
var no: String
//因为父类没有实现 init() 函数, 因此不能直接重写
// override init() {
// print("Student init")
// no = "001"
// //从 Xcode 7 beta 5 开始,系统会默认声称一个 super.init 方法调用
// //建议保留 super.init(),代码的调用线索很清晰
// super.init()
// }
//重写父类方法
override init(name: String, age: Int) {
no = "002"
super.init(name: name, age: age)
}
init(name: String, age: Int, no: String){
self.no = no;
//调用父类的方法,设置父类的属性
super.init(name: name, age: age)
}
}
5. 调用函数
func demo(){
//po self
let p = Student(name: "xiaoxiao", age: 18,no: "007")
print("\(p.name) \(p.age) \(p.no)")
}