Junior
Jaký je rozdíl mezi běžnými a rozšiřujícími metodami v Kotlinu?
sobes.tech AI
Odpověď od AI
Obvyklá metoda je funkce deklarovaná uvnitř třídy.
Rozšiřující metoda je funkce deklarovaná mimo třídu, ale působí, jako by byla jejím členem. Při deklaraci rozšiřující metody je uvedeno jméno cílové třídy, na kterou se aplikuje.
// Obvyklá metoda
class MyClass {
fun myMethod() {
// implementace metody
}
}
// Rozšiřující metoda
fun String.removeVowels(): String {
// implementace metody
}
fun main() {
val myObject = MyClass()
myObject.myMethod() // Volání obvyklé metody
val myString = "Hello"
val stringWithoutVowels = myString.removeVowels() // Volání rozšiřující metody
}
Klíčové rozdíly:
- Deklarace: Obvyklé metody jsou deklarovány uvnitř třídy, rozšiřující metody mimo ni.
- Přístup ke členům třídy: Obvyklé metody mají přímý přístup k členům
privateaprotectedtřídy. Rozšiřující metody nemají přímý přístup k členůmprivateaprotected. this: V obvyklé metoděthisodkazuje na instanci třídy, ve které je metoda deklarována. V rozšiřující metoděthisodkazuje na instanci cílového objektu, pro který je rozšíření voláno.- Dědičnost: Obvyklé metody mohou být přepsány v podtřídách. Rozšiřující metody nejsou děděny a nemohou být přepsány.
- Implementace: Obvyklé metody jsou součástí implementace třídy. Rozšiřující metody jsou implementovány samostatně a nemění původní třídu.
Rozšiřující metody jsou užitečné pro přidání funkcionality ke stávajícím třídám bez jejich modifikace, například ke třídám z externích knihoven nebo ke standardní knihovně Kotlinu.