import UIKit
//自定義的類(lèi) 不需要導(dǎo)入 第三方需要
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)
//調(diào)用的?順序是 student -> Person -> NSObject
//重寫(xiě) 必須有繼承關(guān)系,子類(lèi)需要在父類(lèi)擁有的方法的基礎(chǔ)上進(jìn)行擴(kuò)展,需要添加override關(guān)鍵字
let student1 = Student(no: "001", name: "小紅", age: ?14)
//方法重載之后 ?對(duì)函數(shù)參數(shù)的擴(kuò)展
}
import UIKit
//構(gòu)造函數(shù) 可以不繼承父類(lèi),但是Kvc功能無(wú)法使用
//作用:給屬性分配內(nèi)存空間,設(shè)置初始值,最終創(chuàng)建一個(gè)對(duì)象
//可選屬性 必選屬性
class Person: NSObject {
var name : String?
var age : Int = 13
// ? ?var gender : Int
//可選屬性:可選類(lèi)型默認(rèn)值為nil 不會(huì)分配內(nèi)存空間,在賦值的時(shí)候
//必選屬性:對(duì)象創(chuàng)建成功后,一定有值
//重寫(xiě) ?父類(lèi)的構(gòu)造方法 ?構(gòu)造函數(shù)都是init
override init() {
name = "張三"
// ? ? ? ?gender = 20
//調(diào)用super.init()構(gòu)造函數(shù)之前,必須對(duì)當(dāng)前類(lèi)的必選屬性進(jìn)行初始化
super.init()
}
//重載構(gòu)造函數(shù),參數(shù)名相同,參數(shù)名或者參數(shù)個(gè)數(shù)不同 ?也適合不同的凹函數(shù)
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"
//調(diào)用super.init()之前,必須對(duì)子類(lèi)的必選屬性 初始化
super.init()
}
init(no: String,name: String,age: Int) {
self.no = no
super.init(name: name, age: age)
}
}