zoukankan      html  css  js  c++  java
  • Swift中的便利构造器和构造器链

    import UIKit
    
    // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性
    // 2.便利构造器属于次要的, 辅助性的构造器
    // 3.类中可以不定义便利构造器, 便利构造器必须调用同一个类中的其他构造器完成初始化
    // 4.便利构造器的语法格式 convenience init(形参) {}
    // 5.只有类中才有便利构造器
    
    // 类的构造器链
    // Swift对构造器之间的调用链制定了如下3条规则:
    // 1.子类构造器必须调用直接父类的指定构造器(如果有乳类)
    // 2.便利构造器必须调用同一个类中的其他构造器
    // 3.便利构造器调用的高早期链的最终节点必须是指定构造器
    
    // 简化为:
    // 1.指定构造器总是向上代理(调用父类构造器)
    // 2.便利构造器总是横向代理(调用当前类的其他构造器)
    
    class Person {
        
        var name: String!
        var weight: Double
        
        // 定义指定构造器
        init(name: String, weight: Double) {
            self.name = name
            self.weight = weight
        }
        
        // 定义便利构造器(使用convenience修饰)
        convenience init(n name: String, w weight: Double) {
            self.init(name: name, weight: weight)
        }
    }
    
    var p1 = Person(name: "Rinpe", weight: 62.0)
    var p2 = Person(n: "Lili", w: 50.0)
    

      

  • 相关阅读:
    Java IO 5 : 对象序列化
    Java IO 4 : RandomAccessFile
    3 Linux平台安装jenkins
    AWS-EC2配置swap
    2.8 环境准备-静态资源服务器搭建
    2.7 环境准备-MongoDB
    2.6 环境准备-redis
    2.5 环境准备-zookeeper
    2.4 环境准备-mysql8
    2.3 环境准备-nexus
  • 原文地址:https://www.cnblogs.com/Rinpe/p/5188847.html
Copyright © 2011-2022 走看看