dada

//    }
//    didSet{
//
//        print("旧名\(oldValue)")
//
//    }
//
//}

//创建一个基类Person(5分)
//在基类中定义方法奔跑run(5分)
//run内实现打印字符串“向前全速奔跑”(5分)
class Person{
    func run(){
        
        print("想前全速奔跑");
    }
}
let  na = Person.init()
na.run()

//创建一个继承自Person的Teacher类(5分)
//在Teacher类中定义方法teach(5分)
//在teach函数中实现在控制台打印字符串“上课要迟到了”(5分)
//在teach函数中调用其父类的run函数(5分)

class Teacher: Person {
    
    func teach(){
        
        print("上课要迟到了")
        
        super.run()
    }
}

let  naa = Teacher.init()
naa.teach()


//创建一个类Student并继承与Person(5分)
//定义属性name (5分)
//在Student中监听属性name的setter和getter(5分)
//在Student类中重写父类的run方法,实现打印字符串“体育课上跑了800米”(5分)
//在Student类中定义一个只读的属性height,用来表示学生的身高“175cm”(5分)
//在Student类中懒加载一个属性age用来表示学生的年龄“18岁”(5分)
//为Student类定一个构造函数,在函数内为所有属性赋值(5分)
class Student: Person {
    
    var name:String = "小明"{
        
        willSet(new){
            print("新的名字:\(new)")
        }
        didSet{
            print("旧的名字:\(oldValue)")
        }
    }
    
    override func run() {
        print("体育课上跑了800米")
    }
    var height : String{
        return "175cm"
    }
    lazy var age:String="18岁"
    
    init(name:String,age:String) {
        super.init()
        
        self.name=name
        self.age=age
    }
    
    
    //在Student类中定义一个show方法,用来打印学生信息(5分)
    //show函数限定是公开访问的 (5分)
    //重写Student类的析构函数,在函数内实现所有属性的清空,并打印“调用了析构函数”(5分)
    //添加功能、方法注释(5分)
    
    public func show(){
        print("姓名:\(name),年龄:\(age),身高:\(height)")
    }
    deinit {
        self.name=""
        self.age=""
        print("调用了析构函数")
    }
}

var stu:Student? = Student(name: "小王", age: "20岁")
stu!.name = "小刚"
//stu.name = "小王"
stu!.run()
print(stu!.height)
stu!.show()

stu = nil

猜你喜欢

转载自blog.csdn.net/weixin_43480652/article/details/84934933
dda
今日推荐