对照Java学习Swift--构造过程(Initialization)

Swift和Java的构造器的功能差不多,但是在语法层面有些不同,都是为了实现实例的创建。
Swift构造方法是用init关键字来实现,Java使用跟类名一样的方法来实现,都没有返回值,但是Swift的可失败构造方法如果构建失败返回nil是个例外。
Swift的构造方法:

init() {
    // 在此处执行构造过程
}

Java中的构造方法:

public Person(){
        // 在此处执行构造过程
    }

Swift和Java都有默认的构造函数,Swift的结构体还有逐一构造函数。
Swift包括指定构造器和便利构造器,默认的是指定构造函数,在前面加个convenience是便利构造函数,Java中则没有便利构造函数。

指定构造器将初始化类中提供的所有属性,并根据父类链往上调用父类的构造器来实现父类的初始化。

定构造器将初始化类中提供的所有属性,并根据父类链往上调用父类的构造器来实现父类的初始化。

便利构造器是类中比较次要的、辅助型的构造器。你可以定义便利构造器来调用同一个类中的指定构造器,并为其参数提供默认值。你也可以定义便利构造器来创建一个特殊用途或特定输入值的实例。

类的构造器代理规则

为了简化指定构造器和便利构造器之间的调用关系,Swift 采用以下三条规则来限制构造器之间的代理调用:

规则 1

指定构造器必须调用其直接父类的的指定构造器。

规则 2

便利构造器必须调用同一类中定义的其它构造器。

规则 3

便利构造器必须最终导致一个指定构造器被调用。

可失败构造器

在init关键字后面添加问号(init?)。
可失败构造器会创建一个类型为自身类型的可选类型的对象。你通过return nil语句来表明可失败构造器在何种情况下应该“失败”。

struct Animal {
    let species: String
    init?(species: String) {
        if species.isEmpty { return nil }
        self.species = species
    }
}

先就学这么多,还没必要构造器等,到要用的时候在学吧,东西太多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值