Jak rozlišit metody instance, metody třídy a statické metody v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
V objektově orientovaném programování jsou metody rozděleny do tří typů:
-
Metody instance — pracují s konkrétním objektem třídy. Mají přístup k vlastnostem a dalším metodám tohoto objektu přes
self(v Swift) nebothis(v jiných jazycích). Volají se na instanci třídy. -
Metody třídy — jsou spojeny s samotnou třídou, nikoliv s konkrétním objektem. Ve Swift jsou deklarovány klíčovým slovem
class func. Tyto metody mohou přistupovat ke vlastnostem třídy (statickým), ale nikoliv k vlastnostem konkrétní instance. -
Statické metody — jsou podobné metodám třídy, ale nemohou být přepsány v podtřídách. Ve Swift jsou deklarovány pomocí
static func. Fungují na úrovni třídy, bez přístupu k instanci.
Příklad ve Swift:
class Example {
var value: Int = 0
func instanceMethod() {
print("Toto je metoda instance, value = \(value)")
}
class func classMethod() {
print("Toto je metoda třídy")
}
static func staticMethod() {
print("Toto je statická metoda")
}
}
let obj = Example()
obj.instanceMethod() // volání metody instance
Example.classMethod() // volání metody třídy
Example.staticMethod() // volání statické metody
Hlavní rozdíl je tedy na úrovni, na které metoda pracuje: instance, třída nebo statická (nepřepsatelná) metoda.