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

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の初期コードですら読めません。
ですので、上に引用したコードなどを参考に、一体何をオーバーライドしているのかお教え願いたいです。
本当に初歩的な質問をしてしまい申し訳ございません。何卒よろしくお願いします。