Static vs class functions/variables in Swift classes?

前端 未结 9 1042
不知归路
不知归路 2020-11-28 17:13

The following code compiles in Swift 1.2:

class myClass {
    static func myMethod1() {
    }
    class func myMethod2() {
    }
    static var myVar1 = \"\"         


        
9条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-28 18:08

    I tried mipadi's answer and comments on playground. And thought of sharing it. Here you go. I think mipadi's answer should be mark as accepted.

    class A{
        class func classFunction(){
        }
        static func staticFunction(){
        }
        class func classFunctionToBeMakeFinalInImmediateSubclass(){
        }
    }
    
    class B: A {
        override class func classFunction(){
    
        }
    
        //Compile Error. Class method overrides a 'final' class method
        override static func staticFunction(){
    
        }
    
        //Lets avoid the function called 'classFunctionToBeMakeFinalInImmediateSubclass' being overriden by subclasses
    
        /* First way of doing it
        override static func classFunctionToBeMakeFinalInImmediateSubclass(){
        }
        */
    
        // Second way of doing the same
        override final class func classFunctionToBeMakeFinalInImmediateSubclass(){
        }
    
        //To use static or final class is choice of style.
        //As mipadi suggests I would use. static at super class. and final class to cut off further overrides by a subclass
    }
    
    class C: B{
        //Compile Error. Class method overrides a 'final' class method
        override static func classFunctionToBeMakeFinalInImmediateSubclass(){
    
        }
    }
    

提交回复
热议问题