编辑代码

//练习1-3
//多态性
class Student {
    var name = ""
    var age = 0
    var id = ""
    var basicInfo : String {
        return "\(name) is \(age) years old, the id is \(id)"
    }
    func chooseClass(){
        print("\(name) choose a class.")
    }
    func haveClass(){
        print("\(name) have a class.")
    }
}

class Graduate : Student {
    var supervisor = ""
    var researchTopic = ""
    override var age : Int {
        didSet {
            print("age is set from \(oldValue) to \(age)")
        }
        willSet {
            print("original age will be set to \(newValue)")
        }
    }
    override var basicInfo: String{
        return super.basicInfo + ", supervisor is \(supervisor), research topic is \(researchTopic)"
    }
    func chooseSuperVisor(superVisor:String){
        self.supervisor = superVisor
    }
    override func chooseClass() {
        print("graduate \(name) choose a class")
    }
}

func sportGameRoster(stu:Student)->String{
    return "Athlete name:\(stu.name),age:\(stu.age),id:\(stu.id)"
}
let studenteTom=Student()
studenteTom.name="Tom"
studenteTom.age=19
studenteTom.id="37060116"
let graduateJim=Graduate()
graduateJim.name="Jim"
graduateJim.age=24
graduateJim.id="SY060218"

let rosterTom=sportGameRoster(stu: studenteTom)
let rosterJim=sportGameRoster(stu: graduateJim)