Jakub Smadiš 14.03.2022 Smadiš PB162 Programovanie v jazyku Java I Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 / Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 / Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); • Čo ak má Math iba parametrický konštruktor? Prečo by každá inštancia mala obsahovať túto metódu, keď prakticky stačí iba jedna? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2/3 Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); • Čo ak má Math iba parametrický konštruktor? Prečo by každá inštancia mala obsahovať túto metódu, keď prakticky stačí iba jedna? • Okej, metódu označíme názvom static. Ako však k nej pristúpime, keď nemáme konkrétnu inštanciu objektu? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 /3 Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); • Čo ak má Math iba parametrický konštruktor? Prečo by každá inštancia mala obsahovať túto metódu, keď prakticky stačí iba jedna? • Okej, metódu označíme názvom static. Ako však k nej pristúpime, keď nemáme konkrétnu inštanciu objektu? Namiesto konkrétnej inštancie použijeme názov triedy: Math.sqrt(9) Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 /3 Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); • Čo ak má Math iba parametrický konštruktor? Prečo by každá inštancia mala obsahovať túto metódu, keď prakticky stačí iba jedna? • Okej, metódu označíme názvom static. Ako však k nej pristúpime, keď nemáme konkrétnu inštanciu objektu? Namiesto konkrétnej inštancie použijeme názov triedy: Math.sqrt(9) • A ako vlastne pristupujeme ku konštantám - ktoré sú tiež statické? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 /3 Statické metódy a premenné • Chceme použiť metódu na odmocnenie čísla zvanú sqrt, ktorá je v triede Math. Ako zavolať túto metódu? Math m = new MathQ; m.sqrt (9); • Čo ak má Math iba parametrický konštruktor? Prečo by každá inštancia mala obsahovať túto metódu, keď prakticky stačí iba jedna? • Okej, metódu označíme názvom static. Ako však k nej pristúpime, keď nemáme konkrétnu inštanciu objektu? Namiesto konkrétnej inštancie použijeme názov triedy: Math.sqrt(9) • A ako vlastne pristupujeme ku konštantám - ktoré sú tiež statické? Rovnakým spôsobom: Math.PI Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 2 /3 Otázky na zamyslenie Môže konkrétna inštancia objektu zavolať statickú metódu? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 /3 Otázky na zamyslenie Môže konkrétna inštancia objektu zavolať statickú metódu? Môže. Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 /3 Otázky na zamyslenie Môže konkrétna inštancia objektu zavolať statickú metódu? Môže. Môže statická metóda zavolať konkrétnu metódu? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 /3 Otázky na zamyslenie • Môže konkrétna inštancia objektu zavolat statickú metódu? Môže. • Môže statická metóda zavolať konkrétnu metódu? Nemôže. Otázky na zamyslenie • Môže konkrétna inštancia objektu zavolat statickú metódu? Môže. • Môže statická metóda zavolať konkrétnu metódu? Nemôže. • Prečo? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 /3 Otázky na zamyslenie Môže konkrétna inštancia objektu zavolať statickú metódu? Môže. Môže statická metóda zavolať konkrétnu metódu? Nemôže. Prečo? Metóda môže používať atribúty objektu, ktoré sa vytvárajú pre konkrétny objekt (napr. meno). Metóda v statickom kontexte by nevedela čo má spraviť: Vertex2D.toString() - čo dosadiť namiesto výpisu súradníc? Aký má potom zmysel zavolať túto metódu? Je to nezmysel ... Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 / Otázky na zamyslenie • Môže konkrétna inštancia objektu zavolať statickú metódu? Môže. • Môže statická metóda zavolať konkrétnu metódu? Nemôže. • Prečo? Metóda môže používať atribúty objektu, ktoré sa vytvárajú pre konkrétny objekt (napr. meno). Metóda v statickom kontexte by nevedela čo má spraviť: Vertex2D.toString() - čo dosadiť namiesto výpisu súradníc? Aký má potom zmysel zavolať túto metódu? Je to nezmysel ... • Ako zistím počet vytvorených objektov danej triedy (počet celkovo vytvorených bodov)? Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 / Otázky na zamyslenie • Môže konkrétna inštancia objektu zavolať statickú metódu? Môže. • Môže statická metóda zavolať konkrétnu metódu? Nemôže. • Prečo? Metóda môže používať atribúty objektu, ktoré sa vytvárajú pre konkrétny objekt (napr. meno). Metóda v statickom kontexte by nevedela čo má spraviť: Vertex2D.toString() - čo dosadiť namiesto výpisu súradníc? Aký má potom zmysel zavolať túto metódu? Je to nezmysel ... • Ako zistím počet vytvorených objektov danej triedy (počet celkovo vytvorených bodov)? Použijeme statickú metódu objektu, ktorú vždy pri zavolaní konštruktora inkrementujeme. Jakub Smadiš PB162 Programovanie v jazyku Java I 14.03.2022 3 /