当前位置:  开发笔记 > IOS > 正文

泛型类型的初始化器不会在swift中继承吗?

如何解决《泛型类型的初始化器不会在swift中继承吗?》经验,为你挑选了0个好方法。

这是我的代码:

public class A { 
    public init(n : Int) { 
        print("A")
    } 
} 
public class B : A {
}
public class C : B {
}
let x = C(n: 123)

这无法编译并大喊这样的错误:

repl.swift:9:9: error: 'C' cannot be constructed because it has no accessible initializers

可以编译以下代码.

public class A { 
    public init(n : Int) { 
        print("A")
    } 
} 
public class B : A {
}
public class C : B {
}
let x = C(n: 123)

是否应该继承要求类型指定的泛型类型的初始值设定项?

========以下附加内容=======

"超类初始化器在某些情况下是继承的,但只有在安全且适当的情况下才会继承.有关更多信息,请参阅下面的"自动初始化程序继承"."
--- Apple Inc."Swift编程语言(Swift 2)"iBooks.

还有这个

"但是,如果满足某些条件,则会自动继承超类初始值设定项."

"假设您为在子类中引入的任何新属性提供默认值,则应用以下两个规则:" 规则1 "如果您的子类未定义任何指定的初始值设定项,则它会自动继承其所有超类指定的初始值设定项." 规则2 "如果您的子类提供了所有超类指定初始化程序的实现 - 通过按照规则1继承它们,或者通过提供自定义实现作为其定义的一部分 - 那么它会自动继承所有超类便利初始化程序."

当查看第一个代码时,子类B没有定义任何指定的初始化器,它应该自动继承它的所有超类指定的初始化器,那些来自A.But的实际上并没有看起来连接到我.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有