Sobes.tech
Junior — Middle

Wie unterscheidet man in der objektorientierten Programmierung Instanzmethoden, Klassenmethoden und statische Methoden?

sobes.tech KI

Antwort von AI

In der objektorientierten Programmierung werden Methoden in drei Typen unterteilt:

  • Instanzmethoden — arbeiten mit einem bestimmten Objekt der Klasse. Sie haben Zugriff auf die Eigenschaften und andere Methoden dieses Objekts über self (in Swift) oder this (in anderen Sprachen). Sie werden auf einer Instanz der Klasse aufgerufen.

  • Klassmethoden — sind mit der Klasse selbst verbunden, nicht mit einem bestimmten Objekt. In Swift werden sie mit dem Schlüsselwort class func deklariert. Solche Methoden können auf die Eigenschaften der Klasse (statische) zugreifen, aber nicht auf die Eigenschaften einer konkreten Instanz.

  • Statische Methoden — ähneln den Klassmethoden, können aber in Unterklassen nicht überschrieben werden. In Swift werden sie mit static func deklariert. Sie arbeiten ebenfalls auf Klassenebene, ohne Zugriff auf eine Instanz.

Beispiel in Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Dies ist eine Instanzmethode, value = \(value)")
    }

    class func classMethod() {
        print("Dies ist eine Klassenmethode")
    }

    static func staticMethod() {
        print("Dies ist eine statische Methode")
    }
}

let obj = Example()
obj.instanceMethod()      // Aufruf der Instanzmethode
Example.classMethod()     // Aufruf der Klassenmethode
Example.staticMethod()    // Aufruf der statischen Methode

Der Hauptunterschied liegt also im Level, auf dem die Methode arbeitet: Instanz, Klasse oder statische (nicht überschreibbare) Methode.