とても初歩的な質問になります。

```

    import SpriteKit
    
    class GameScene: SKScene {
    
    // lastを用意しておく
    var last:CFTimeInterval!
    
    override func didMoveToView(view: SKView) {}
    
    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {}
    
    // 赤い四角を、画面中央から上に向かって打ち出すメソッド
    func shoot() {
        let square = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(40, 40))
        square.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
        square.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(40, 40))
        square.physicsBody.affectedByGravity = false
        square.physicsBody.velocity = CGVectorMake(0, 100)
        square.physicsBody.linearDamping = false
        self.addChild(square)
    }
    
    override func update(currentTime: CFTimeInterval) {
    
        // lastが未定義ならば、今の時間を入れる。
        if !last {
            last = currentTime
        }
    
        // 1秒おきに行う処理をかく。
        if last + 1 <= currentTime {
    
            self.shoot()
    
            last = currentTime
        }
    }
    }
    
```

こちらのコードは  
<https://qiita.com/mochizukikotaro/items/6d3a7e445ea67e5b4643>  
から引用させていただいております。また、若干古いバージョンになりますが、あまり突っ込まないでください。

色々なサイトを閲覧していて、オーバーライドは親クラスを継承した際に、無理やり（？）引数や処理の異なる同名の関数を定義する行為だと心得たのですが、そうなってくると、上に引用したコードのように、親クラスが何なのかよくわからないケースが多すぎます。  
極端な話、Xcodeの初期コードですら読めません。  
ですので、上に引用したコードなどを参考に、一体何をオーバーライドしているのかお教え願いたいです。  
本当に初歩的な質問をしてしまい申し訳ございません。何卒よろしくお願いします。
CC BY-SA 4.0
2019-06-03T14:12:35.853
55491
2019-06-03T14:12:35.853
16877
question
swift spritekit
Swiftのオーバーライド関数の存在条件について