import UIKit
//自定义的类 不需要导入 第三方需要
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// let person = Person()
// print(person.name)
// print(person.age)
let student = Student()
print(student.no)
print(student.name!)
print(student.age)
//调用的�顺序是 student -> Person -> NSObject
//重写 必须有继承关系,子类需要在父类拥有的方法的基础上进行扩展,需要添加override关键字
let student1 = Student(no: "001", name: "小红", age: 14)
//方法重载之后 对函数参数的扩展
}
import UIKit
//构造函数 可以不继承父类,但是Kvc功能无法使用
//作用:给属性分配内存空间,设置初始值,最终创建一个对象
//可选属性 必选属性
class Person: NSObject {
var name : String?
var age : Int = 13
// var gender : Int
//可选属性:可选类型默认值为nil 不会分配内存空间,在赋值的时候
//必选属性:对象创建成功后,一定有值
//重写 父类的构造方法 构造函数都是init
override init() {
name = "张三"
// gender = 20
//调用super.init()构造函数之前,必须对当前类的必选属性进行初始化
super.init()
}
//重载构造函数,参数名相同,参数名或者参数个数不同 也适合不同的凹函数
init(name: String,age: Int) {
self.name = name
self.age = age
super.init()
}
func show(){
}
func show(a: Int) -> Void {
}
}
import UIKit
class Student: Person {
var no : String
override init() {
no = "001"
//调用super.init()之前,必须对子类的必选属性 初始化
super.init()
}
init(no: String,name: String,age: Int) {
self.no = no
super.init(name: name, age: age)
}
}