13.7 Swift关于便利构造方法“重写”的讨论

来源:互联网 发布:免费的英语口语软件 编辑:程序博客网 时间:2024/05/18 11:00

        /**

         13.7-关于便利构造方法重写的讨论.mp4

         重写成一个便利构造方法

         

         Swift语言中便利构造方法不能重写。因为它是横向的

         */

        

         

        class Human {

            let name:String

            var age:Int

            init(name:String, age: Int) {

                self.name = name

                self.age = age

            }

            

            convenienceinit() {

                self.init(name:"", age: 0)

            }

            

        }

        

        class Woman:Human {

            var haveBaby:Bool = false

            

           // 派生类中定义一个构造方法,它跟父类中的某个指定构造方法一样

//            override init(name: String, age: Int) {

//                haveBaby = false

//                super.init(name: name, age: age)

//            }

            

            init(name:String, age: Int, haveBaby:Bool) {

                self.haveBaby = haveBaby

                super.init(name: name, age: age)

            }

            

           // 派生类中用便利构造方法重写父类中的指定构造方法

            //            convenience override init(name: String, age: Int) {

            //                self.init(name: name, age: age, haveBaby: false)

            //            }

            

           // 派生类中用便利构造方法重写父类中的便利构造方法

            // Initializer does not override a designated initializer from its superclass,Swift语言便利构造方法中不存在重写

//            convenience override init() {

//                self.init(name: "", age: 0, haveBaby: false)

//            }

            

            // 这个是当前类中的便利构造方法

            convenienceinit() {

                self.init(name:"", age: 0, haveBaby:false)

            }


        }

        

        

        var w0 =Woman.init(name:"d", age: 0, haveBaby:true)

        

        var w1 =Woman.init()


0 0