You are on page 1of 34

Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

👨💻
Java pre začiatočníkov
Created September 23, 2020 7:43 PM

Languages Java

Materials Empty

Type of language Object language

Reviewed

Type of content Course

Základy

Komentáre
Dokumentačný:

/**

*Documentation comment

1 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

*/

line comment

/* multi line

comment

*/

Premenné
int (typ) number (názov) = 240; (hodnota)
Zobrazenie v pamäti:

• Dodržiavajú sa veľké a malé písmená (Java je case sensitive)

• Druhé slovo v názve je veľkým písmenom

• metóda (method)

◦ začína s malým písmenom


Trieda (class)

• začína s VEĽKÝM písmenom


Premenná (variable)

2 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

• začína s malým písmenom


Názvy typov (type names)

• Person
Camel case: Lepšie čitateľné!

• firstName

• isThisNumber

• returnPerson

• getPerson
Typy premenných

• lokálne (metódy) - vytvorené pre danú metódu, nie je prístupná v


inej metóde

• parametre (metódy) - vkladajú sa do názvu premenných, môže ich


byť viac, oddeľujú sa čiarkami

• premenné tried (class) -

• inštančné premenné (object) -


Dátové typy

• primitívne (primitive) - začínajú sa s malým písmenkom, byte, short,


int, long, float, double, char, Boolean

• Referenčné (reference) - začína s veľkým písmenom, je to všetko


ostatné

◦ premenná obsahuje referenciu (adresu, odkaz) na daný objekt

3 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Pretypovanie premenných
byte b = (byte) i; - do premennej b (byte), vloží premennú i, ktorú
pretypuje na byte (to v zátvorke). Môže dôjsť k skresleniam.

Výrazy
Vytvorené pomocou premenných , operátorov, volaní metód.

Bežne používané operátory


++ inkrementácia

i++ // premenná ostane rovnaká a potom sa priráta 1

++i // premenná sa zväčší o 1 a potom sa vráti


— dekrementácia

i—

—i

• sčítanie +, odčítanie -, delenie /, násobenie *, delenie modulo


(zvyšok po celočíselnom delení) %

4 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Príkazy - statements
3 druhy:

• declaration statements

◦ pri deklarácii premenných, vždy keď je pred premennou


napr. int, tak tá premenná sa deklaruje. Pamäťová bunka
vznikne ak jej priradíme hodnotu (int i; nemá hodnotu, čiže
ani pamäťovú bunku). Viacero premenných sa dá písať do
jedného riadka pomocou čiarky ale kvôli prehľadnosti sa to
píše oddelene.

• expression statements

◦ Príklady:

◦ Musí byť dodržaný rovnaký formát, t.j. ak je int napravo, musí


byť aj naľavo.

◦ List

• control flow statements

◦ if, else, while, try, break, return, switch.


Priradenie - vždy keď je =, priraďujeme hodnotu.

5 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Booleanovské výrazy
Podmienka If()

V zátvorke musí vzniknúť TRUE alebo FALSE


Operátory

== rovnosť - ľavá strana sa rovná pravej

≠ nerovnosť - ľavá strana sa nerovná pravej

&& logický súčin - platí ľavá aj pravá strana

|| logický súčet - platí ľavá alebo pravá strana

< menší - ľavá strana je menšia ako pravá

>väčší - ľavá strana je väčšia ako pravá


Pri jednom riadku nemusia byť kučeravé zátvorky, pri bloku musia.
Odporúča sa používať vždy kučeravé.

Ternárny operátor
Podobá sa na IF ELSE
výraz ? výraz1 : výraz2 - ak je podmienka(výraz) pravda, splní sa výraz1,
ak nie, splní sa výraz2

While a Do While
"do while" najprv vykoná vec a potom sa pýta na podmienku. "while"
musím mať podmienku aby vôbec začal.

Switch
Vyzerá takto:

6 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Ak výraz sa rovná hodnote v case, vykoná sa príkaz za dvojbotkou, a


vykoná sa break. Default znamená že ak sa nesplnila žiadna z case tak
sa vykoná. Z konvencie sa dáva na koneic aj break.
Môže byť len typu char, byte, short, int
Nesmie byť typu long, float, double.
Príkazov môže byť neobmedzene vo vetve. Od JDK7 môže byť aj String
a typ enum.
!!! Ak nedáš break tak program pokračuje, ak v Príkaze 1 nebude break
tak zase sa overuje case hodnota 2, neukončí sa.

Enum
Vytvára sa pod triedou alebo New → Java Class → Kind → Enum. Sú to
enumeračné typy ("Iba veľkými písmenami napísane nejaké názvy").
Ukončujú sa bodkočiarkou.

Keď ho ideme použiť v kóde, názov ENUM (napr. Day) používame ako
určenie typu premennej (namiesto int, String,...).

Break, continue, návestia


Break - ukončí celý cyklus
Continue - ukončí len danú časť cyklu (všetko za ním sa preškočí a

7 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

overuje sa podmienka cyklu znova)


Návestie - Názov návestia a dvojbodka - navestie: Dáva sa za break
alebo continue a skočí cyklus na návestie.

Triedy a objekty
Trieda je akoby predpis pre náš objekt. Trieda má nejaké premenné.
Obsahuje aj nejaké funkcie (metódy - void). Keď vytvárame nový objekt,
tak vytvárame inštanciu triedy. Nový objekt sa vytvára pomocou "new"
za tým názov objektu so zátvorkami.

"Auto()" je konštruktor danej triedy. Bezparametrický konštruktor je


keď danú funkciu (napr. Auto()) nemáme a Java ju tým pádom sama
vytvorí. Cez bodku môžme pristupovať k premenným / funckiám našej
triedy. Tak isto sa dá pristupovať aj k metódam.

Metódy
Metódy triedy - Ak je metóda static void, nepotrebujem vytvoriť objekt
aby som zavolal tú funkciu, čiže funkcia patrí triede, to isté platí pre
premenné.
Metódy objektové/inštančné - voláme ich keď si vytvoríme nový objekt
a voláme ich cez bodku
Na to aby premenná patrila triede musí mať pred sebou static, bez neho
patrí len metóde.

Koštruktor/objekt : - jeho zadefinovanie do ktorého sme napísali


pripočítavanie pre premennú triedy

8 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Konvenčne s malým písmenom. Za názov zátvorky normálne a následne


kučeravé. Každá metóda musí mať návratový typ (napr. void - nič
nevracia, int vracia integer).
Pri int metóde ak v tej metóde narazíme na return, končí sa, za ňou sa
nič diať nebude. Môžu mať aj viac returnov ale v oddelené v
podmienkach.
Ak v () nič nie je tak je to bezparametrická metóda. Píšu sa tam
premenné(rôzne typy) a oddeľujú sa čiarkou. Treba pamätať ako Java
pracuje s pamäťou, ak tam je int (primitívny dátový typ), tak sa tam
dáva priamo hodnota. Pri String (referenčný dátový typ), dáva sa tam
adresa na String. Ak to zmením v metóde, vytvorý sa úplne nový objekt,
nezmení sa nám pôvodný String. Ak chceme aby sa hodnota menila ako
pri primitívnych dátových typoch, musíme použiť StringBuilder. K
danému Stringu napr. s, pomocou append pripojím novú hodnotu
"s.append("niečo")" V parametroch metódy musím takisto použiť
StringBuilder

Vnútri metódy môžme volať ďalšiu metódu. Výstup musí byť rovnaký int
-int, inak treba pretypovať.
Dve metódy môžu mať rovnaký názov pokiaľ majú iné parametre.
Pozerá na parametre aj na ich poradie. (preťažovanie metód).
V Jave je jedno kde sa definuje metóda.

Premenné
Všetky premenné musia niekomu patriť (triede/metóde/objektu). Ak je
premenná deklarovaná v triede mimo metód, tak je viditeľná vo
všetkých metódach.

• Premenné triedy - majú pri sebe "static". Používajú sa v statických


metódach ale dajú sa použiť aj pri normálnych

9 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

metódach ale dajú sa použiť aj pri normálnych

• Premenné objektu - bez "static" (napr. int a;), patria len


samotnému objektu. Je použiteľná iba v objektových metódach.
Nemôžu byť použité v statickej metóde.

• Lokálne premenné - vo vnútri v metóde, patria iba metóde.


V statickej metóde je nutné použiť len statické alebo lokálne
premnenné(vytvorené vo vnútri metódy).

Premenné triedy nemusíme inicializovať


nemusíme inicializovať. Už sú inicializované, int má hodnotu 0, float
hodnotu 0.0, boolean je false,....

Premenné v metóde - lokálne premenné


Platné od miesta deklarácie až po koniec metódy alebo po koniec
bloku. Lokálne premenné musia byť inicializované !!! Čiže int i; neplatí!!!

Zatienenie
Ak máme premennú triedy a v metóde máme premennú s tým istým
menom, tak tá v metóde zatieni tú v triede. (bude platiť tá vnútri
metódy, nie tá ktorá patrí triede)

Použitie
V statickej metóde (main) môžme zavoalť statické metódy len ich
názvom(alebo Trieda.názov), nemusíme vytvárať žiaden objekt. Ak som
v rámci triedy, nemusím dávať Trieda.názov, stačí len názov, v iných
triedach musím použiť Trieda.názov.

Polia
Je to referenčný dátový typ (v pamäti sa otvára odkaz).
Deklarácia:

• int[] pole;

10 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

• int[] pole;

• String[] poleStringov;

• Pes[] poleObjektovPes;

(typ poľa, hranaté zátvorky, názov poľa)


V príkladoch vyššie nie je pridelená pamäť čiže sa ešte nedá používať.
Pomocou new pridelíme pamäť a teda: pole = new int[20]; Kompilátor
zaručí že prvky budú nulové, false alebo null.
pole.lenght - môžme pristúpiť k prvku lenght čo je dĺžka poľa.
Na prvok poľa sa odkazujeme pomocou indexu poľa, ktorý začína od 0 a
je to vždy integer.
Dá sa použiť:

• pole[1]

• pole[i] // i te typu int

• pole[vratCislo()] // vracia číslo typu int

• pole[i + 10] // i je typu int

Inicializovať pole môžme aj takto:

• int poleInt = {1,4,6,75,158};

Práca s týmto poľom je taká istá ako predtým.l

• výpis celého poľa: Arrays.toString(poleInt)

• zotriedenie poľa: Arrays.sort(poleInt)

Viacrozmerné polia
Počet hranatých zátvoriek určuje koľko rozmerov má pole.

Deklarácia - deklarujeme tým že inicializujeme pamäť. Musíme


prechádzať najprv prvým rozmerom a potom druhým rozmerom (preto
2 fory)

11 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Funguje to ako klasické polia, kde začíname prvým rozmerom, (4) budú
miesta v ktorých sú odkazy na pole s druhýmn rozmerom (2). Môžeš si
to predstaviť aj ako tabuľku, kde riadky sú prvý rozmer a stĺpce sú
druhý rozmer, čiže i,j (0,1) bude prvý riadok a druhý stĺpec.
Poliam nemusím zadeklarovať dĺžku. Môžme ju priradiť dynamicky. V
tomto prípade bude priraďovať vždy o jednu veľkosť poľa viac, čiže od 1
po 4. (4 kvôli veľkosti prvého poľa).

Output:

12 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Polia sa dajú vytvárať aj pomocou kučeravých zátvoriek. Počet zátvoriek


vo vnútri určuje prvý rozmer. Čiže prvá zátvorka je ako riadok a zátvorky
vo vnútri sú stĺpce.

Výpis nášho poľa.

Vysvetlenie kódu nižšie. Prvé pole má 5, vnútri majú 4, a ďalšie vnútri


majú 3.

13 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Postupne sa vytvárajú, nedá sa preskakovať. Ak si vynechám rozmer


(len posledného môžem, v strede nemôžem) tak si následne ďalej v
kóde niekde vytvoriť ak ich chcem používať.

Triedy a objekty
Trieda je vlastne šablóna. Void znamená že metóda nebude nič vracať.
Viem vytvoriť metódu pomocou void , ktorá bude nastavovať nejakú
premennú, v tomto prípade počet nôh. Vnútri sa pomociu this
odkazujem na inštanciu tejto triedy (nie v inej triede ale v našej) a
potom názov premennej a hodnotu. v IJIdea sa rozdeľuje farbami kde sa
odkazujem. return funguje rovnako, takisto určujem pred bodkou v
ktorej triede mám premennú a za bodkou akú premenné vraciam. Kedže
nikde v triede nie je static nemôžem použiť " trieda.metóda ". Aby
to fungovalo bez static musím vytvoriť inštanciu tej triedy (objekt) -
vytvorím si novú premennú typu názvu tej triedy a pomocou new
vytvorím inštanciu tej triedy (ak tam dám objekt ktorý neexistuje s
prázdnymi zátvorkami za tým, tak Java to považuje za bezparametrický
konštruktor, čiže si zkonštruuje objekt tejto triedy.

14 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Private
Ak dáme pred premennú Private tak priamo premenná nebude
prístupná ale ostatné objekty ktoré ju používajú áno. Je to privátne
vrámci tej triedy, v iných nám to fungovať nebude!!!

15 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Public
To isté ako private len je prístupné z vonku pre iné triedy.

"Getrry" a "Settry"
Prakticky tieto funkcie generujú metódy na vrátenie obsahu premennej.
Dajú sa vložiť osobitne alebo aj naraz.

Konštruktory
Zkonštruuje nám objekt našej triedy. Ak chcem vytvárať konštruktor s
nejakými premennými, tak si ho musím vytvoriť sám. Pomocou ⌘ + N
viem vytvoriť Konštruktor, getter, setter atď.
Ak v parametroch(obyčajná zátvorka()) vytvorím premennú tak ju
vezme.
Bezparametrický konštruktor java nevytvorí, ak už taký existuje s tým
istým názvom. Dva s rovnakým názvom definované môžu byť ak nie sú
rovanké parametre a ich poradie. Nepozerá sa na názvy premenných
ale len na poradie (napr. int, int, String).

16 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Preťaženie
Vytváranie konštruktorov alebo metód s rovnakým názvom je
preťaženie. JE to úplne to isté pri metóda ako aj konštruktoroch.

Využitie this pre prístup ku konštruktorom


Zavolám this() (so zátvorkami) tak sa odkazujem na nejaký
konštruktor mojej triedy. Ak nechám prázdne tak som zavolal
konštruktor bez parametrov.
V main volám kontštruktor Stol "int, int, String", posielam tam (4, 5,
"biela") Ale vnútri toho konštruktora volám iný, "int, String, int", ktorému
posielam hodnoty (40, "daco", 5). Takže na pocetNoh sa nastavilo 40.

Pomocou this() (so zátvorkami) som si vytvoril nový konštruktor Stol,


kde sme pomocou s.get vytiahli parametre z toho pôvodného. Čiže sme

17 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

vytvorili rovnaký. Pamätať!!!


This musí vyť na začiatku tej metódy, pokiaľ pred ním niečo bude tak to
nebude fungovať!!!

Public - znamená že je použiteľná aj mimo svojej triedy (Math)


static - znamená že to môžme použiť aj bez vytvorenia inštancie (new)
final - finálna, nemá sa už meniť
double - typ

Konštanta - final
Pomocou final spravíme z premennej konštantu.

Rušenie objektov
Vždy keď vytvorím objekt, tak sa vytvorí v pamäti. V Jave nemusím rušiť
nepoužité objekty, stará sa o to sama.

Kedže String používa adresy, tak v druhom riadku sa nám adresa


zmení ale pôvodný objekt "daco" nám zostane v halde (heap). Na
odpratanie týchto nepoužitých vecí má Java garbage collector.

Statický inicializačný blok

18 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Static blok je určený na naplnenie našeho poľa. Pole máme finálne ale
to sa vzťahuje na jeho veľkosť a nie hodnoty v ňom, preto druhý riadok
v maine bude fungovať ale tretí už nie, pretože v treťom sa pokúšame
vytvoriť nové pole v starom ktoré je final .

Reťazce
Nejaký text je reťazec. Nedá sa zväčšovať / zmenšovať.

V prvom príklade sa stále vytvára nový objekt. Ak chceme pridať k


nášmu objektu nový reťazec, musím použiť StringBuffer , ktorý cez
append pridá k pôvodnému objektu nový reťazec, nebude sa vytvárať
ďalší objekt.

19 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

ďalší objekt.

Funkcie s reťazcami, je ich veľa. Na ľavo píše návratovú hodnotu


(boolean, String atď.)

Používanie reťazcov
Môžme konvertovať základné dátove typy na reťazce (napr. int na
String).

Ak k double pridám String tak mi z toho výjde jeden String, automaticky


to zkonvertuje.
Dá sa aj zkonvertovať String na jednoduchý dátový typ (int).

Pomocou referenčného dátového typu (ideme na int tak Integer)


môžme použiť funckiu valueOf , ktorá zkonvertuje náš String na int.
čiže náš int bude "20".

20 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

čiže náš int bude "20".


Aj objekty môžme prevádzať na Stringy.

Všetky triedy / objekty implicitne dedia z objektu Object. Pre to môžme


použiť funkciu toString .

Reťazenie

string.trim(); oreže prázdne miesta za a pred Stringom. Trim mi


vracia nový string.

string.substring mi oreže dva písmenka zo začiatku (podľa hodnoty


v zátvorke). Dá sa to aj zreťaziť. Bude to vyzerať takto:

Takto sa dá pokračovať a napájať dalšie metódy. Šetrí to miesto.

Zapuzdrenie dát

21 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Zapuzdrenie dát
Princíp zapuzdrenia: Dáta, ktoré sa majú zapísať iba v rámci triedy, napr.
ako dátum narodenia, tak sa dávajú do private , ak chceme aby sa dali
tie dáta aspoň zobraziť, musíme si vytvoriť verejnú metódu (v triede kde
sú tie údaje), ktorá bude vraciať tento parameter ( getter ).

Predávanie premennej do metód


Pri StringBuilder ak chcem niečo pridať za náš text tak použijem
.append ktorý pridá náš string na koniec toho pôvodného!

Ak používam referenčnú premennú (ako String , StringBuilder a


pod.), tak v metóda, ktoré s nimi pracujú nemusím dávať return ,
pretože len mení referenciu, čiže daná premenná sa zmení v pamäti a
pri "soute" už vyťahuje priamo z pamäte. V danej premennej sa
uchováva referencia (odkaz, link) na miesto v pamäti.
Pri primitívnych dátových typoch toto nefunguje!!!
Pri týchto typoch musím na konci metódy vrátiť hodnotu (vložiť
návratovú hodnotu). Pri použití s týmto typom musím v maine dať
cislo = metoda(cislo); aby sa mala tá hodnota do čoho vrátiť.
Rozdiel nižšie

22 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Prekrytie a preťaženie metód


Nemožnosť prekrytia metódy sa používa vtedy, keď máme dokonalú
metódu a nechceme aby ju nič prekrylo.
Trieda sa pomocou Extends NazovRodiča zaradí pod inú triedu, teda
dedí. Potom v kóde pomocou super. , volám rodiča, nie podľa jeho
názvu.

Overridom ju môžem aj premeniť na niečo iné (prekryť) a tomu sa


snažíme zabrániť. Spravím to pomocu final , za public v metóde
rodiča.

Abstraktné triedy
Existuje aj vynútené prekrytie metódy, to spravíme tak že určíme že
rodič bude abstraktná trieda. Vtedy musím overridnuť všetky metódy,
ktoré sú určené ako abstrakt. V rodičovskej triede sa to píše "bez tela"
čiže bez {}. Od triedy ktorá má abstrakt, mnemôžem vytvoriť inštanciu
(new ...).

Prístupové práva
V podstate ide o to, kde sú naše premenné viditeľné.
Existujú:
Private
Nič neuvedené
Protected
Public

23 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Interfacy
Vznikli kvôli tomu že Java neumožňuje viacnásobnú dedičnosť. To
znamená že v jednej triede, nemôžem dediť od viacerých tried, vždy
môžem dediť iba od jendej. Implementovať môžme viacero interfacov.
Považujú sa za prednosť Javy
Rozhranie definuje súbor metód, ktoré nie sú implementované. Trieda
musí implementovať všetky metódy rozhrania. Rozhranie nemôže
deklarovať žiadne premenné, iba konštanty. Rozhranie narozdiel od
dedičnosti nevynucuje príbuzenské vzťahy, iba funkcie.
Pozíva sa tak že v triede si vytvorím override (⌘+N → implement
methods) vyberiem metódy a v inej triede napríklad main, po vytvorení
konštruktora môžem cez bodky pristúpiť k metódam, ktoré boli
vytvorené pomocou rozhrania.

Rozhranie ako typ referenčnej premennej:


Pomocou interfacu môžem referenčne pristupovať k premenným.

24 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Ak použijem toto,

Implementácia viacerých rozhraní


V maine pri implements čiarkou oddeľujem viacero interfacov.
super znamená že volám túto istú metódu ale vo vyššej triede, v
rodičovskej, čiže úsečka ale my chceme overridnuť aby nám vypisovalo
pre štvorec takže to spravíme normálne (super nebude nikde).

Dedenie pri rozhraniach


extends slúži na dedenie, čiže náš štvorec zdedí implementácie od
úsečky aj s override.

25 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Dokážeme zároväň dediť aj implementovať, čiže aj extends aj


implements .

Aj interface môže dediť od iných interfacov! Môžme dediť aj od


viacerých interfacov narozdiel od triedy ktorá môže dediť len od
jednej!!!

Operátor instanceoff
Pomocou instanceof dokážem zistiť ktoré rozhrania implementujeme.

26 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Keď niečo dedím aj ja sa tým stávam!


Môžme sa spýtať či nejaký objekt je inštanciiou nejakého iného objektu,
teda či od iného objektu dedil.

Enum
Jednoducho povedané je to zoznam úzko súvisiacich vecí ako napr. dni
v týždni. Je dostupné od JDK 1.5. Ak je člen nejakej triedy tak je
implicitne static (nemusíme použiť inštanciu, čiže new ). Nie je možné
použiť new . Pre porovnanie môžme použiť = . Hodnoty v ENUMe
odďeľujeme čiarkou a na konci bodkočiarkou. Do zátvoriek si môžme
dať nejakú premennú, ktorá nám ich môže reprezentovať.
Naša premenná je poradie, potom je getter na vytiahnutie poradia a
akoby konštruktor, ktorý priradzuje ten int ku dňom.

27 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Tým pádom pomocou bodky nami vytvorenej metódy getPoradie() si


viem vypísať číslo dňa.

ENUM je referenčný dátový typ!!!


Dni.values() je funkcia ktorá nám vráti hodnoty z nášho ENUM.

V ENUMe môžme mať aj abstraktnú metódu. Ak obsahuje metódu


abstract, tak naše metódy sa nedajú použiť. Ak to chcem použiť, tak v
každej deklarácii hodnoty overridnem metódu a implementujem vnútro:

Exeptions
Napríklad na zachytenie chyby pri delení nulou. Vytvorím ju tak že za
moju metódu hodím throws Exception .
Hierarchia výnimiek:
1. Throwable - najvyššia treida v tej hierarchii exeptions, všetky

28 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

1. Throwable - najvyššia treida v tej hierarchii exeptions, všetky


exceptions dedia od throwable
2. Error, Runtime - väčšinou neošetrujeme, bznikajú sa behu
programu.
3. ArithmeticExceptions -existuje
Ak dáme throws arithmeticException do našej triedy delenie, tak ak
vznikne chyba tak mi vychodí arithmeticeyceptions a vyhodí ju vyššie
kde sa deje to delenie. (Main) Kým chybu neodchytím bude hádzať
error. Pomocou try{} catch(){} skúsim zbehnúť program a do
catchu erroru vždy musím niečo dať, napríklad vypísať ho cez sout
alebo printStackTrace();

Existuje aj napr e.getMessage(); čiže správa z chyby. (do soutu)


Try , catch má možnosť pridať nakoniec ešte finally, čiže kus kódu ktorý
sa vykoná bez ohľadu na chybu.
Pri zachytávaní exceptions mi vypíše ak zachýtávam len jednu chybu.
Čiže ak mám len ArithmeticException tak mi bude vypisovať chybný
catch, ale ak dám len čisto Exception tak mi to vezme pretože je
nadradená nad Arithmetic. Ak nad podradenými catchmi chytám
nadradený (čisto exceptions) tak Java je natoľko inteliogentná že sa
bude pýtať načo zachytávam tie spodné ak mám vrchnú. Funguje to tak
aj ke'd nie sú v tomto poradí
Ak to zachytávam v tej pôvodnej triede delenie musím aj do názvu
metódy napísať že vyhadzuje chybu

29 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Najprv konkrétne exceptions a potom všeobecné bude fungovať.


Použije sa to vtedy keď čakám nejakú chybu ale na koniec dám celkové
zachytenie chyby ak by bola iná.
Exceptions môžem použiť aj vlastné, čiže v definícii triedy dopíšem
extends Exception a vnútri definujem čo bude tá exception robiť.
Potom v mojej triede dám len throw new "NazovMojejException" a
bude vyhadzovať čo som si definoval.

30 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Ako programovať!
1. Chcem vyriešiť nejaký problém

a. Napríklad mám zhluk dát, chcem ich načítať (mám ich v


databáze) tak si vygooglim ako napojiť databázu. Príliš zložité?
Prekonvertujem to do txt a už je to ľahšie.
2. Problém si rozložiť na menšie a hľadať funkcie akoby sa to dalo
spraviť.
V Jave sa všetko do podrobna naučiť nedá!!!

Polymorfizmus (mnohostrannosť)
Voláme akoby stále rovnakú metódu ale tá robí stále niečo iné. V
polyformizme potomok môže nahradiť predka. To znamená že do
referenčnej premennej pôvodne deklarovanej s typom predka, môžeme
priradiť referenciu na inštanciu potomka. Čiže cez referenčnú premennú

31 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

predka využiť metódy deklarované v potomkovi.


Tento spôsob začína mať zmysel keď máme viacero potomkov.
V predkoch je určená metóda, ktorá sa musí oimplementovať, čiže sme
si istý že ju každý potomok má.
Predok nemusí byť abstraktný, ale metóda musí byť implementovaná.
super znamená že zavolám potomka.

Príklad predka:

Potomok:

32 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

Kedže je to všetko referencia, môžem dať výskledky do poľa anásledne


to všetko vypísať:

Čiže cez predka viem vytvoriť inštancie jeho potomkov.


Import - aj dám na koniec namiesto názvu triedy ktorú importujem * tak
importujem celý package.
Copy of Java pre pokročilých

👨💻 Copy of Java pre začiatočníkov

33 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...

34 z 34 29/05/2022, 19:21

You might also like