Sobes.tech
Junior — Middle

Hoe onderscheid je in objectgeoriënteerd programmeren instantie-methoden, klasse-methoden en statische methoden?

sobes.tech AI

Antwoord van AI

In objectgeoriënteerd programmeren worden methoden onderverdeeld in drie typen:

  • Instantie-methoden — werken met een specifiek object van de klasse. Ze hebben toegang tot de eigenschappen en andere methoden van dat object via self (in Swift) of this (in andere talen). Ze worden aangeroepen op een instantie van de klasse.

  • Klasse-methoden — zijn gerelateerd aan de klasse zelf, niet aan een specifiek object. In Swift worden ze gedeclareerd met het sleutelwoord class func. Deze methoden kunnen toegang krijgen tot de eigenschappen van de klasse (statisch), maar niet tot die van een concreet object.

  • Statische methoden — lijken op klasse-methoden, maar kunnen niet worden overschreven in subklassen. In Swift worden ze gedeclareerd met static func. Ze werken op klasse-niveau, zonder toegang tot een instantie.

Voorbeeld in Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Dit is een instantie-methode, value = \(value)")
    }

    class func classMethod() {
        print("Dit is een klasse-methode")
    }

    static func staticMethod() {
        print("Dit is een statische methode")
    }
}

let obj = Example()
obj.instanceMethod()      // aanroep van instantie-methode
Example.classMethod()     // aanroep van klasse-methode
Example.staticMethod()    // aanroep van statische methode

Dus, het belangrijkste verschil ligt in het niveau waarop de methode werkt: instantie, klasse of statisch (niet overschrijfbaar).