swift 子类继承父类

//         子类的指定构造方法必须调用父类构造方法,并确保调用发生在子类存储属性初始化之后。而且指定构造方法不能调用同一个类中的其他指定构造方法;
//         便利构造方法必须调用同一个类中的其他指定构造方法(可以是指定构造方法或者便利构造方法),不能直接调用父类构造方法(用以保证最终以指定构造方法结束);
//         如果父类仅有一个无参构造方法(不管是否包含便利构造方法),子类的构造方法默认就会自动调用父类的无参构造方法(这种情况下可以不用手动调用);
//         常量属性必须默认指定初始值或者在当前类的构造方法中初始化,不能在子类构造方法中初始化;
//

        class Person{
            var firstName : String,lastName:String
            var age:Int=0
            var fullName:String{
                get{
                    return firstName+""+lastName
                }
            }
            init(firstName:String,lastName:String){
                self.firstName = firstName
                self.lastName = lastName
            }
            func showMessage() {
                print("name=(fullName),age=(age)")
            }
            //通过final声明 子类无法重写
            final func sayHello(){
                print("hello world.")
            }
        }
        
        class Student:Person{
            
            //重写属性监视器
            override var firstName: String{
                willSet{
                    print("oldValue=(firstName)")
                }
                didSet{
                    print("newValue=(firstName)")
                }
            }
            var score:Double
            
            //子类指定构造方法一定要调用父类构造方法
            //并且必须在子类存储属性初始化之后调用父类构造方法
            init(firstName:String,lastName:String,score:Double){
                self.score = score
                super.init(firstName:firstName,lastName:lastName)
            }
            convenience init(){
                self.init(firstName:"",lastName: "",score: 0)
            }
            //重写方法
            override func showMessage() {
                print("name=(fullName),age=(age),score=(score)")
            }
        }
         
        let aa = Person(firstName: "test",lastName:"TEST")
        aa.showMessage()
        aa.sayHello()
        let p = Student(firstName: "1111",lastName: "1111",score: 1111)
        p.firstName = "test"
原文地址:https://www.cnblogs.com/sayimba/p/5752410.html