Referenční typy - třída
6. Metody
6.1. Statické metody
Volání v případě statické metody představuje zprávu odeslání celé třídě, a ne konkrétní instanci. I to je občas zapotřebí např. při vytvoření nového objektu, kolik bylo již vytvořeno instancí třídy apod.
Ilustrativní příklad TridaStatickaMetoda
Program TridaStatickaMetoda
- Popis: Deklarace nestatické třídy, deklarace statické metody uvnitř této třídy
- Zadání: Deklarujte nestatickou třídu Trida, která bude obsahovat hlavní metodu Main ve které budete volat statickou metodu StatickaMetoda. StatickaMetoda bude pouze obsahovat výpis textu "Nyní probíhá statická metoda ve stejné třídě"
- Řešení: Bude postupně probráno v následujícím textu
Volání statické metody z jiné metody
v rámci téže třídy není zapotřebí uvádět třídu. V následujícím kódu
vidíme, volání statické metody z hlavní statické metody Main nestatické třídy – viz Kód1. Takto
jsme volali statické metody, které jsme doposud vytvářeli.
//Deklarace třídy class Trida { //Deklarace soukromé statické metody třídy static void StatickaMetoda() { Console.Write("Nyní probíhá statická metoda ve stejné třídě"); } static void Main(string[] args) { //Volání statické metody v rámci stejné třídy StatickaMetoda(); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); } }
Kód 1: Příklad volání statické metody ve stejné nestatické třídě
Na výpisu v konzoli vidíme, že proběhlo volání statické metody v rámci stejné nestatické třídy – viz Výstup programu - Kód 1.
Nyní probíhá statická metoda ve stejné třídě
Výstup programu - Kód 1: Ukázka výsledku volání statické
metody ve stejné nestatické třídě
Ilustrativní příklad StatickaMetodaJinaTrida
Program StatickaMetodaJinaTrida
- Popis: Deklarace jiné nestatické třídy, deklarace statických metod, volání statické metody jiné nestatické třídy
- Zadání: Deklarujte dvě nestatické třídy Trida a JinaTrida. Trida bude obsahovat hlavní metodu Main, ve které budete volat statickou metodu StatickaMetoda. StatickaMetoda bude pouze obsahovat výpis textu "Nyní probíhá statická metoda ve stejné třídě"
- Řešení: Bude postupně probráno v následujícím textu
Pokud bychom ale volali metodu jiné třídy, třídu volané metody musíme uvést – viz Kód 2.
namespace StatickaMetodaJinaTrida { //Deklarace nestatické třídy class Trida { static void Main(string[] args) { //Volání statické metody z jiné třídy JinaTrida.StatickaMetoda(); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); } } //Deklarace jiné nestatické třídy class JinaTrida { //Deklarace soukromé statické metody jiné třídy public static void StatickaMetoda() { Console.WriteLine("Nyní probíhá statická metoda v jiné třídě"); } } }
Kód 2: Příklad volání statické metody jiné nestatické třídy v metodě Main implementované uvnitř nestatické třídy
Na výpisu v konzoli vidíme, že proběhlo volání metody z jiné třídy – viz Výstup programu - Kód 2.
Nyní probíhá statická metoda v jiné tříděVýstup programu - Kód 2: Ukázka výsledku volání statické metody jiné nestatické třídy