Swift 初始化规则混乱

2024-01-11

Rule 1

如果您的子类没有定义任何指定初始值设定项,它将自动继承其超类的所有指定初始值设定项。

困惑:我在子类中提供了一个指定的初始值设定项。这意味着超类指定的初始化器不会归结为子类。但我还是需要写override关键字提供子类中任何超类指定初始化程序的实现(这意味着超类指定的 init 归结为子类)。规则 1 规定,如果我提供了子类指定的初始值设定项,那么指定的超类将不会出现。 (只有当我们没有为子类提供任何指定的 init 时,覆盖才有意义。)

class Food{
    var name : String
    init(foodName :String) {
        self.name = foodName
    }
}

class RecipieIngredient : Food{
    var quantity : Int
    init(fName :String, quantity :Int) {
        self.quantity = quantity
        super.init(foodName: fName)
    }

    override convenience init (foodName :String){
        self.init(fName: foodName, quantity: 1)
    }
}

这是因为 init() 不是受保护的方法。因此,如果您在子类中定义 init() 方法,编译器不知道您是指超类的 init() 方法,还是子类的 init() 方法。 “覆盖”清除了这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 初始化规则混乱 的相关文章

随机推荐

  • 将列表元素追加到python中的列表列表中

    给出以下列表 list1 1 2 3 4 5 6 7 8 list2 10 11 12 13 最好的改变方式是什么list1所以它变成了Python中的以下列表 1 2 10 3 4 11 5 6 12 7 8 13 您可以使用zip x
  • anorm joda-time - 本地日期时间支持

    与 Anorm 2 5 2 SQL s insert into user name registered date values name registered date on name gt user name registered da
  • Hibernate Search - 如何默认列出所有记录

    我正在使用 Hibernate 搜索 我的 jsp 页面中有一个搜索文本框 如果我输入一些文本 它会返回正确的结果 但是 如果我留空消息并单击搜索按钮 它不会返回任何记录 Code Session session HibernateUtil
  • 将 COALESCE 与 Group by 结合使用

    我有一个表 其中包含如下数据 pid category name subcategoryname 424 Bathing Infant Care Baby Lotion 428 Bathing Infant Care Baby Lotion
  • QtWidgets.QFileDialog.getOpenFileName 返回一个元组

    我最近更新到了 Qt5 for Python 的新版本 在此过程中 我不得不根据发生的一些显着变化来更改我的代码 我想深入了解我创建的这行代码 这感觉像是一种肮脏的方式来解决获得一个问题的问题string代替tuple从函数 注意 0 在该
  • 嵌套 JSON:如何向对象添加(推送)新项目?

    我刚刚从数组 对象和 JSON 开始 所以希望我在这里忽略了一些简单的东西 我在尝试时遇到错误添加 推送 我的 json 对象中的一个新项目 我遇到以下错误 Result of expression library push undefin
  • 如何更改模式视图 iOS 6 上的状态栏

    我有以下星座 主视图 自定义 UIViewController 无导航控制器或导航栏 包含一个按钮 该按钮以模态方式连接到第二个表视图控制器 该控制器嵌入在导航控制器中 MainView gt 导航控制器 gt TableView 在 Ma
  • 生成后如何在expect shell脚本中获取子进程pid

    脚本的一部分a exp usr bin expect spawn ssh qTfnN D port user host expect assword 我怎样才能得到pid子进程 ssh 如果我在 bash shell 中执行这些 而不是在脚
  • 如何告诉 pyximport 使用 cython --cplus 选项?

    pyximport 非常方便 但我不知道如何让它使用 Cython 的 C 语言选项 从命令行运行cython cplus foo pyx 如何使用 pyximport 实现等效功能 谢谢 让 Cython 创建 C 文件的一种方法是使用
  • Javascript 对引用与值定义的变量的混淆

    我了解 javascript 语言的以下属性 var bar 1 var foo bar bar something entirely different foo is still 1 然而 当尝试将此逻辑应用于对象时 它的行为似乎有所不同
  • C 中变量的作用域与生命周期

    有人可以准确解释 C 中变量的范围和生命周期的概念吗 在 C 中是否有所不同 我对范围和生活感到困惑 变量的 范围 是源代码的一个区域 您可以在其中引用该变量 生命周期 是程序执行期间存在的时间 默认情况下 局部变量的生命周期与其作用域相同
  • 如何在 Twig 中调用“time_diff”过滤器

    我怎样才能调用 时间差 Twig 中的函数 The code post created at time diff Output The filter time diff does not exist 如果您使用 Symfony 2 并想使用
  • 即使提供访问令牌后,Google 选择器仍要求登录

    首先 经过一些研究 我发现很多人都遇到过这个问题 但我没有找到任何具体的解决方案 说到这个问题 客观的 我想将谷歌驱动器与我的应用程序集成 以便用户可以从我的应用程序将文件上传到他们的驱动器 因此 用户首先必须将其驱动器与应用程序集成 然后
  • 循环并将对象推入数组

    HTML div class row div class col xs 5 stateName Kuala Lumpur div div class col xs 7 div div
  • 序列化OrientDB RecordID时无限递归

    在我的架构中 我有一个像这样的抽象类 JsonAutoDetect JsonMethod NONE public abstract class AbstractEntity Id private Object id Version priv
  • 使用 Laravel 迁移创建外键时 MySQL 错误

    我已经设置了 Laravel 应用程序并且正在使用Sentry 2 https cartalyst com manual sentry用于用户身份验证 我有一个模型叫Post与默认哨兵一起User桌子 我想让一个用户拥有很多帖子 并且一个帖
  • 如何在php中存储复选框值

    我有条件应用复选框 我想在其中存储字符串值 条件应用 但是 我收到插入错误 因此给出解决方案如何在数据库中存储值 HTML 可能类似于
  • 如何在.NET中调用DrawThemeTextEx

    我需要在 Vista 7 玻璃窗中编写带有发光效果的文本 并且我正在尝试调用 API 来在那里编写一些文本 我已经检查了一个很棒的sample http www codeproject com KB vista textonglass as
  • 到底如何将 ckeditor 与 Paperclip 集成,以便它可以上传图像文件?

    你怎么获得http github com galetahub rails ckeditor http github com galetahub rails ckeditor工作 以便您可以上传图像文件 我认为我不会使用 s3 存储 任何帮助
  • Swift 初始化规则混乱

    Rule 1 如果您的子类没有定义任何指定初始值设定项 它将自动继承其超类的所有指定初始值设定项 困惑 我在子类中提供了一个指定的初始值设定项 这意味着超类指定的初始化器不会归结为子类 但我还是需要写override关键字提供子类中任何超类