JAVA - Objektové programování
Třídy, metody (návratové datové typy, argumenty, parametry), konstruktory, přetěžování metod a konstruktorů, klíčové slovo static a this, variabilní počet argumentů.
Třída
- definuje data a metody
- slouží jako šablona pro vytváření instancí
- data mohou být buď:
- proměnné primitivního datového typu nebo
- odkazy na další objekty
- instancemi tříd jsou objekty
Samotná třída tedy nepředstavuje vlastní informace, jedná se pouze o předlohu, data obsahují až objekty. Objektů jedné třídy přitom může existovat libovolné množství (samozřejmě také žádný).
Metody
Návratový typ metody může být primitivní datový typ (int, bool, float,...), reference (na objekt) nebo void (žádná hodnota není vrácena).
Za návratovým typem a názvem metody je v kulatých závorkách napsán seznam parametrů (a jejich typů) oddělených čárkami.
void
nazevMetody(int
prvniParametr,
bool
druhyParametr){...};
Argument je už samotná instance, dosazená do parametru.
Výsledek metody (návratová hodnota) je uveden klíčovým slovem return.
Konstruktory
Speciálním typem metody je tzv. konstruktor. Tato metoda nemá jméno (jmenuje se stejně jako třída) a obsahuje inicializaci objektu.
Konstruktor je volán automaticky při vytváření objektu. Pokud při deklaraci konstruktor nepopíšete, konstruktor je automaticky prázdný.
Přetěžování metod a konstruktorů
Konstruktorů jednoho objektu, nebo metod se stejným jménem v jednom objektu může být i více, musí se však lišit v parametrech, aby Java poznala, který konstruktor nebo metodu chcete zavolat.
Této vlastnosti se říká polymorfismus.
Klíčové slovo static & this
Klíčové slovo static můžeme přidat před datový typ proměnné nebo metody.
static int
statickaPromenna =
6;
Takto označené proměnné a metody jsou přistoupitelné i bez vytvoření instance ; za pomocí názvu třídy.
NazevTridy.statickaPromenna
= 12;
Statická proměnná má “stálou” hodnotu, ve všech instancích. Pokud ji někde změníme, změní se ve všech ostatních instancích.
Statická metoda nedokáže pracovat s ne-statickými proměnnými. Může přistoupit ke statickým proměnným třídy, nebo použít parametry pro získání jiných hodnot.
Kličové slovo this může být použito k přístupu k proměnným a metodám třídy. Například v konstruktoru, když se názvy parametrů shodují s názvy proměnných ve třídě.
public class
Trida {
int
x = 10;
Trida(int
x) {
this.x =
x;
}
}
Variabilní počet argumentů
Variabilního počtu argumentů (0 nebo více) lze dosáhnout napsáním třech teček ( . . . ) za datový typ parametru.
void
nazevMetody(int
... variabilni)
Taková proměnná může být napsána jako poslední.
Takhle NE:void
nazevMetody(int
... variabilni,
int dalsiPromenna)
Zdroje
https://www.interval.cz/clanky/naucte-se-javu-tridy-a-objekty-1/
Kvíz
BETACo je to třída v objektovém programování?
Jakožto klíčový stavební pilíř objektově orientovaného programování reprezentuje třída (Class) jakýsi abstraktní návrhový nákres či šablonu, podle níž se následně v praxi oživují a vytvářejí jednotlivé reálné objekty – instance.
Co je to konstruktor v Javě?
Speciální počáteční procedura nesoucí striktně zcela shodný název, jako se jmenuje samotná třída. Jakmile v programu zazní slovo `new`, spustí se její kód, dosadí vnitřním proměnným výchozí data a vytesá připravený objekt pro reálné použití na svět.
Co znamená klíčové slovo `static` v Javě?
Přilepením slova `static` k deklaraci vlastnosti takzvaně odtrhnete daný prvek od jednotlivých vytvářených kopií objektů a pevně ho přišijete jako centrální a nesdílený majetek výhradně do rukou samotné kmenové třídy (např. `Math.PI` nebo `Math.pow()`).
Co je to přetěžování metod (overloading) v Javě?
Jde o techniku úspory názvů, při níž do třídy napíšete procedury shodně se jmenující, leč s diametrálně jiným podpisem vstupních parametrů. Java dle typu či počtu proměnných (např. jeden Int nebo tři Stringy) nakonec přirozeně odliší, který kód chtěl pisatel zpracovat.
Na co odkazuje klíčové slovo `this` v Javě?
V nepřehledném interním chaosu argumentů třídy pomáhá ukazatel s klíčovým prefixem `this.` jasně nasměrovat paměť interpretu k faktu, že má kód těď použít či přepsat proměnnou náležící specificky pouze oné instanci (objektu), na které se právě nachází.
Jaký návratový typ má metoda, která nevrací žádnou hodnotu?
Pokud se na vývojářsky prováděném bloku funkce v jejím závěru neočekává odevzdání matematického propisu s výslednými daty pro další operace (odpálí Return z ničeho), tak se poctivě píše slib do anglického `void` (prázdný) a kód se bez datových návratů ukončí.
Co je instance třídy?
Vzniklá, nakódováním oživená a datově odlišená hmotná fyzická věc uvnitř RAM neboli takzvaná instance (např. konkrétní modré auto s SPZ), vzešlá formou z výroby abstraktní neviditelné definující formy – takzvané zdrojové Třídy s nákresem vozu.
Jak se v Javě vytvoří nový objekt třídy `Auto`?
Při alokování paměťových sil k zrodu objektu od výrobního nákresu "Auto", vývojář pomocí přiřazování volajíc operátorem příkaz slova `new` vybudí provedení prvního konstruktového sjednocení `Auto()`, propisující výstup dat na novou proměnnou a.
Co je to zapouzdření (encapsulation)?
Moudré izolování a střežení křehkých proměnných kmenových dat v bloku patřícím pod samotný objekt před omylem nešetrného vnějšího veřejně programovaného chování, s připuštěním ovládat ukrytá pole pouze exkluzivně za bariérou s předdefinovanými `get` a `set` metodami.
Jaký modifikátor přístupu omezuje přístup pouze na danou třídu?
Tuhý soukromý zámek přístupu klauzule `private` zamkne dané proměnné a prvky za silnou zídku třídy, zabraňujíce komukoliv sahat, nahlížet nebo zasahovat do takových ukrytých stavových mechanismů přímo – a to absolutně z jakéhokoli vnějšího cizího dokumentu či dokonce i z potomků u dědění.