zoukankan      html  css  js  c++  java
  • 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"
  • 相关阅读:
    Mac的Safari安装油猴插件(Tampermonkey)
    element表格点击行即选中该行复选框
    Previous operation has not finished; run 'cleanup' if it was interrupted最简单有效的解决方法
    读取JDK API文档,并根据单词出现频率排序
    Mac 下安装并配置 Tomcat
    Mac上安装并配置JDK
    GitHub注册失败,卡在第一步
    Jmeter 操作手册(三)
    Jmeter 操作手册(二)
    .Jmeter 使用手册(一)
  • 原文地址:https://www.cnblogs.com/sayimba/p/5752410.html
Copyright © 2011-2022 走看看