以下是我操场上的副本(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中做同样的事情不是问题。
你可以解释一下我做错了什么吗?非常感谢。