Junior
Co jsou referenční datové typy?
sobes.tech AI
Odpověď od AI
Odkazové typy neukládají samotnou hodnotu, ale odkaz (adresu v paměti) na místo, kde je tato hodnota uložena. Při přiřazení nebo předání těchto dat se kopíruje pouze odkaz, nikoli celý objekt. Změny provedené přes jeden odkaz budou viditelné při přístupu přes jiné odkazy ukazující na stejný objekt.
Příklady odkazových typů v různých jazycích:
- Java: Třídy (
String,Object, vlastní třídy), rozhraní, pole. - C#: Třídy (
string,object, vlastní třídy), rozhraní, delegáti, pole. - Python: Všechny datové typy (seznamy, slovníky, n-tice, množiny, třídy, funkce).
# Příklad v Pythonu
list1 = [1, 2, 3]
list2 = list1 # list2 odkazuje na stejný seznam jako list1
list2.append(4)
print(list1) # Výstup: [1, 2, 3, 4]
print(list2) # Výstup: [1, 2, 3, 4]
Rozdíl oproti hodnotovým typům je v tom, že hodnotové typy ukládají hodnotu samou, a při přiřazení nebo předání se kopíruje celá hodnota.
Příklad srovnání:
| Charakteristika | Hodnotové typy | Odkazové typy |
|---|---|---|
| Uložení | Samotná hodnota | Odkaz na hodnotu |
| Přiřazení/předání | Kopie hodnoty | Kopie odkazu |
| Změna | Neovlivní originál | Mění originál |
| Příklad (C#) | int, struct, enum |
class, interface, array |