Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了初始化 – Swift子类化 – 如何覆盖Init()大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有以下类,用init方法: class user { var name:string var address:string init(nm: String, ad: String) { name = nm address = ad } } 我试图子类这个类,但我不断收到的错误super.init()部分: class registeredUser : user
我有以下类,用init方法: @H_874_15@class user { var name:string var address:string init(nm: String,ad: String) { name = nm address = ad } }

我试图子类这个类,但我不断收到的错误super.init()部分:

@H_874_15@class registeredUser : user { var numberPriorVisits: Int // This is where things start to go wrong - as soon as I type 'init' it // wants to autocomplete it for me with all of the superclass' arguments,// and I'm not sure if those should go in there or not: init(nm: String,ad: String) { // And here I get errors: super.init(nm: String,ad: String) // etc....

苹果的iBook有子类化的例子,但没有一个特性类有一个init()方法与任何实际参数。所有的初始化都没有参数。

那么,你怎么做呢?

除了Chuck的答案,你还必须在调用super.init之前初始化你的新引入的属性

因此,使它工作:

@H_874_15@init(nm: String,ad: String) { numberPriorVisits = 0 super.init(nm: nm,ad: ad) }

这个简单的初始化为零可以通过将属性认值设置为零来完成。也鼓励这样做:

@H_874_15@var numberPriorVisits: Int = 0

如果你不想要这样的认值,那么扩展你的初始化器也为新的属性设置一个新的值是有意义的:

@H_874_15@init(name: String,ads: String,numberPriorVisits: int) { self.numberPriorVisits = numberPriorVisits super.init(nm: name,ad: ads) }

大佬总结

以上是大佬教程为你收集整理的初始化 – Swift子类化 – 如何覆盖Init()全部内容,希望文章能够帮你解决初始化 – Swift子类化 – 如何覆盖Init()所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。