Platnost proměnných
Z MiS
(Rozdíly mezi verzemi)
(→Třídní proměnné: Přidáno klíčové slovo static.) |
(Přidány příklady a podrobnější popis.) |
||
Řádka 1: | Řádka 1: | ||
− | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:Stránky_s_obrázky]] |
− | == Třídní | + | == Třídní atributy == |
* Popisují vlastnosti celé třídy. | * Popisují vlastnosti celé třídy. | ||
− | * | + | * Jejich hodnota je společná pro všechny objekty (instance) dané třídy. |
* Jsou k dispozici po celou dobu spuštění programu. | * Jsou k dispozici po celou dobu spuštění programu. | ||
* Nejsou závislé na existenci instance. | * Nejsou závislé na existenci instance. | ||
* Označují se klíčovým slovem: <code>static</code> | * Označují se klíčovým slovem: <code>static</code> | ||
+ | ; Typické použití — počítač instancí | ||
public class Auto { | public class Auto { | ||
[[Java: Modifikátory přístupu|private]] '''static''' int pocetAut = 0; | [[Java: Modifikátory přístupu|private]] '''static''' int pocetAut = 0; | ||
Řádka 21: | Řádka 22: | ||
} | } | ||
− | == Instanční | + | |
+ | == Instanční atributy == | ||
+ | * Popisují vlastnosti konkrétní instance. | ||
+ | * Každá instance má svoji vlastní hodnotu. | ||
+ | * Vytváří se při vytvoření instance a s ní také zanikají, jsou k dispozici po celou dobu existence instance. | ||
+ | * Není potřeba psát žádné klíčové slovo. | ||
+ | |||
+ | |||
+ | == Příklady: Instanční × třídní atributy == | ||
+ | <div class="Priklad"> | ||
+ | Příklad 1 — Škoda Octavia | ||
+ | * <code>Množství paliva v nádrži</code> je ''instanční atribut''. | ||
+ | ** Jedna Octavia má jiné množství paliva v nádrži než jiná. | ||
+ | ** Nemá smysl mluvit obecně o množství paliva v nádrži Škody Octavia, protože každý konkrétní automobil má množství paliva aktuálně jiné. | ||
+ | * <code>Doporučený interval výměny svíček</code> je ''třídní atribut''. | ||
+ | ** Interval platí pro všechny automobily daného typu (dané motorizace). | ||
+ | ** Pokud výrobce interval změní, bude platit opět pro všechny automobily daného typu — i ty už vyrobené, i ty, které teprve vyrobíme. | ||
+ | </div> | ||
+ | <div class="Priklad"> | ||
+ | Příklad 2 — Lak na nehty | ||
+ | * <code>Množství laku v lahvičce</code> je ''instanční atribut''. | ||
+ | ** Koupím-li novou lahvičku, bude plná. Starší lahvička je již skoro vyčerpaná. | ||
+ | ** Nemá smysl mluvit obecně o množství laku, protože hodnota je pro každou lahvičku jiná. | ||
+ | * <code>Doporučený odlakovač</code> je ''třídní atribut''. | ||
+ | ** Platí pro všechny lahvičky (instance) daného typu laku. | ||
+ | ** Pokud výrobce změní doporučení, bude platit opět pro všechny instance daného typu — i ty už nakoupené, i ty, které teprve vyrobíme/nakoupíme. | ||
+ | </div> | ||
+ | |||
+ | |||
+ | == Instanční a třídní atributy — obrázek == | ||
+ | |||
== Lokální proměnné == | == Lokální proměnné == | ||
+ | * Pomocné proměnné, které vytváříme v rámci kódu metod. | ||
+ | * Jsou k dispozici pouze v bloku, ve kterém byly vytvořeny (metoda, tělo cyklu, kód podmíněného příkazu,...) | ||
+ | |||
+ | <div class="Priklad"> | ||
+ | ; Úkol — Co je špatně na následujícím kódu? | ||
+ | Kód má počítat celkovou částku na výplaty. | ||
+ | for (Zamestnanec z : zamestnanci) { | ||
+ | int celkem += z.getCastka(); | ||
+ | } | ||
+ | System.out.println(celkem); | ||
+ | Jak kód opravíte? | ||
+ | </div> | ||
== Související stránky == | == Související stránky == | ||
* [[Java: Zápis tříd]] | * [[Java: Zápis tříd]] |
Verze z 5. 4. 2016, 11:12
Obsah |
Třídní atributy
- Popisují vlastnosti celé třídy.
- Jejich hodnota je společná pro všechny objekty (instance) dané třídy.
- Jsou k dispozici po celou dobu spuštění programu.
- Nejsou závislé na existenci instance.
- Označují se klíčovým slovem:
static
- Typické použití — počítač instancí
public class Auto { private static int pocetAut = 0; ... public Auto() { Auto.pocetAut++; ... } ... }
Instanční atributy
- Popisují vlastnosti konkrétní instance.
- Každá instance má svoji vlastní hodnotu.
- Vytváří se při vytvoření instance a s ní také zanikají, jsou k dispozici po celou dobu existence instance.
- Není potřeba psát žádné klíčové slovo.
Příklady: Instanční × třídní atributy
Příklad 1 — Škoda Octavia
-
Množství paliva v nádrži
je instanční atribut.- Jedna Octavia má jiné množství paliva v nádrži než jiná.
- Nemá smysl mluvit obecně o množství paliva v nádrži Škody Octavia, protože každý konkrétní automobil má množství paliva aktuálně jiné.
-
Doporučený interval výměny svíček
je třídní atribut.- Interval platí pro všechny automobily daného typu (dané motorizace).
- Pokud výrobce interval změní, bude platit opět pro všechny automobily daného typu — i ty už vyrobené, i ty, které teprve vyrobíme.
Příklad 2 — Lak na nehty
-
Množství laku v lahvičce
je instanční atribut.- Koupím-li novou lahvičku, bude plná. Starší lahvička je již skoro vyčerpaná.
- Nemá smysl mluvit obecně o množství laku, protože hodnota je pro každou lahvičku jiná.
-
Doporučený odlakovač
je třídní atribut.- Platí pro všechny lahvičky (instance) daného typu laku.
- Pokud výrobce změní doporučení, bude platit opět pro všechny instance daného typu — i ty už nakoupené, i ty, které teprve vyrobíme/nakoupíme.
Instanční a třídní atributy — obrázek
Lokální proměnné
- Pomocné proměnné, které vytváříme v rámci kódu metod.
- Jsou k dispozici pouze v bloku, ve kterém byly vytvořeny (metoda, tělo cyklu, kód podmíněného příkazu,...)
- Úkol — Co je špatně na následujícím kódu?
Kód má počítat celkovou částku na výplaty.
for (Zamestnanec z : zamestnanci) { int celkem += z.getCastka(); } System.out.println(celkem);
Jak kód opravíte?