覆盖一个快速的函数

时间:2016-06-12 09:48:06

标签: swift override

以下是我操场上的副本(Xcode 7.3.1):

class A {}
class B : A {}

class C1
{
    func z ( a: A ) -> C1 { return C1 () }
    func z ( a: B ) -> C1 { return C1 () }
}    
class C2 : C1
{
    override func z ( a: A ) -> C2 { return C2 () }
    override func z ( a: B ) -> C2 { return C2 () }
}
class C3 : C1
{
    override func z ( a: A ) -> C3 { return C3 () }
    override func z ( a: B ) -> C3 { return C3 () }
}

class D1
{
    func z ( a: A ) {}
    func z ( a: B ) {}
}
class D2 : D1
{
    override func z ( a: A ) {}
    override func z ( a: B ) {}
}
class D3 : D1
{
    override func z ( a: A ) {}
    override func z ( a: B ) {}
}

类C2和C3重写C1类函数。类D2和D3重写D1类函数。类Dx仅与类Cx不同,函数不返回任何内容。

将此代码复制并传递到您的游乐场。你应该在C2和C3类中得到一个错误:

Playground execution failed: MyPlayground.playground:8:19: error: declaration 'z' cannot override more than one superclass declaration
    override func z ( a: A ) -> C2 { return C2 () }

如果B级没有继承A级,那就没关系。改变B类定义不会影响Dx类:它总是适合它们。

我确实认为在Swift王国中有些东西已经腐烂了#34;在Java中做同样的事情不是问题。

你可以解释一下我做错了什么吗?非常感谢。

0 个答案:

没有答案