具有相同命名静态函数的Swift派生类

时间:2019-07-30 21:29:35

标签: swift static-methods

我想为从彼此派生的多个类使用相同的命名静态函数。我真的不想将它们命名为G_something,H_something等。

有什么办法可以迅速做到这一点:

class G {
    static func dosomething()
    {
        print("G")
    }
}

class H : G {
    class func dosomething()
    {
        G.dosomething()
        print("H")
    }
}

class I : H {
    class func dosomething()
    {
        H.dosomething()
        print("I")
    }
}

I.dosomething()

2 个答案:

答案 0 :(得分:1)

简而言之:

class G {
    class func dosomething()
    {
        print("G")
    }
}

class H : G {
    override class func dosomething()
    {
        super.dosomething()
        print("H")
    }
}

class I : H {
    override class func dosomething()
    {
        super.dosomething()
        print("I")
    }
}

I.dosomething()
  

G

     

H

     

答案 1 :(得分:1)

简单的覆盖应该起作用:

class G {
    class func dosomething()
    {
        print("G")
    }
}

class H : G {
    override class func dosomething()
    {
        super.dosomething()
        print("H")
    }
}

class I : H {
    override class func dosomething()
    {
        super.dosomething()
        print("I")
    }
}


I.dosomething()