V programování Java se podpis metody vztahuje k jedinečnému identifikátoru metody. Skládá se z názvu metody a seznamu jejích parametrů. Signatura pomáhá odlišit jednu metodu od druhé a umožňuje kompilátoru Java porovnat volání metod s jejich odpovídajícími definicemi. Podpis metody zahrnuje následující součásti:
Název metody: | Je to název daný metodě, který by měl být platným identifikátorem Java a dodržuje konvence pojmenování. Název metody by měl být popisný a měl by odrážet funkčnost, kterou provádí.
Seznam parametrů: | Určuje parametry nebo argumenty, které metoda očekává, že obdrží, když je volána. Každý parametr v seznamu se skládá z typu parametru a jeho názvu. Více parametrů je odděleno čárkami. Pokud metoda nevyžaduje žádné parametry, použije se prázdný seznam parametrů. Například:
public void methodName() {}
Pokud má metoda parametry, podpis zahrnuje typy a názvy parametrů:
public void název_metody(int param1, String param2) {}
android proces acore
Typ návratu: | Definuje datový typ hodnoty, kterou metoda vrací. Pokud metoda nevrací žádnou hodnotu, návratový typ je zadán jako void. Pokud vrátí hodnotu, návratový typ by měl odpovídat datovému typu vrácené hodnoty. Například:
public int methodName() {}
Pokud metoda vrací pole nebo objekt, návratový typ představuje typ pole nebo třídu vráceného objektu. Kombinace názvu metody a seznamu parametrů jednoznačně identifikuje metodu v rámci třídy. Java podporuje přetěžování metod, což znamená, že můžete definovat více metod se stejným názvem, ale různými seznamy parametrů. Přetížené metody mají různé signatury, což umožňuje kompilátoru určit vhodnou metodu k provedení na základě poskytnutých argumentů. Je důležité si uvědomit, že podpis metody nezahrnuje modifikátor přístupu metody (jako je veřejný, soukromý nebo chráněný) ani jiné modifikátory (jako je statický nebo konečný). Tyto modifikátory určují viditelnost a chování metody, ale nejsou považovány za součást podpisu.
Modifikátory přístupu: | Ačkoli to není považováno za součást podpisu metody, modifikátory přístupu jako veřejný, soukromý nebo chráněný určují viditelnost metody. Určují, odkud lze k metodě přistupovat. Například k veřejné metodě lze přistupovat z jakékoli třídy, zatímco k soukromé metodě lze přistupovat pouze v rámci stejné třídy.
Modifikátory: | Kromě modifikátorů přístupu mohou mít metody další modifikátory, jako je statický, konečný, abstraktní nebo synchronizovaný, které definují různé chování a omezení metody. Tyto modifikátory také neovlivňují podpis metody.
Výjimky: | Pokud metoda vyvolá jednu nebo více výjimek, jsou součástí podpisu metody. Výjimky jsou deklarovány v podpisu metody pomocí klíčového slova throws, za kterým následuje seznam typů výjimek. To znamená, že metoda může potenciálně vyvolat tyto výjimky během svého provádění. Například:
public void methodName() throws IOException, IllegalArgumentException {}
Přetížení metody: | Java podporuje přetěžování metod, což umožňuje definovat více metod se stejným názvem, ale různými seznamy parametrů. Přetížené metody mají jedinečné signatury založené na počtu, typu a pořadí jejich parametrů. Samotný návratový typ nestačí k rozlišení přetížených metod. Například:
public void methodName(int param1) {} public void methodName(int param1, int param2) {} public void methodName(String param1) {}
Typ vrácení: | Návratový typ není součástí podpisu metody při zvažování přetížení metody. Pokud však dvě metody mají stejný název a seznam parametrů, ale liší se svým návratovým typem, bude to mít za následek chybu kompilace. Java neumožňuje přetížení metody pouze na základě návratového typu.
Vararg: | Java podporuje v parametrech metody argumenty proměnné délky, známé také jako varargs. Parametr varargs vám umožňuje předat metodě proměnný počet argumentů stejného typu. Parametr varargs je za typem parametru označen třemi tečkami (...). Například:
public void methodName(int... numbers) {}
Pomocí varargs můžeme volat metodu s libovolným počtem argumentů int, včetně nuly.
Pochopení signatur metod je zásadní při práci s vyvoláním metod, implementaci rozhraní, rozšiřování tříd nebo používání reflexe. Zajišťuje volání správné metody a poskytuje konzistentní a jednoznačný způsob identifikace metod v programech Java.