Programovßnφ v jazyce JavaKurz programovßnφ v Jav∞ - 11. dφl |
||||||||||||||||||||||||||||||||||||||||
┌vodem | Kurz programovßnφ v Jav∞ | Kurz programovßnφ v Jav∞ pro mobilnφ telefony | Soubory ke sta₧enφ | Otßzky a odpov∞di |
||||||||||||||||||||||||||||||||||||||||
┌vod Vφtejte v dalÜφm dφle kurzu o zßkladech Javy. Na zaΦßtku si °ekneme co jsou balφky, proto₧e je to nezbytnΘ k dalÜφmu v²kladu. Potom probereme specifikßtory p°φstupu. Nakonec zaΦneme v²klad o t°φdßch. Balφky VÜechny programy v Jav∞, kterΘ napφÜete jsou organizovßny v balφcφch. Ka₧d² balφk mß svΘ vlastnφ jmΘno. Jednou z nejd∙le₧it∞jÜφch v²hod je to, ₧e nem∙₧e dojφt ke konfliktu jmen, pokud chcete pou₧φt dv∞ t°φdy se stejn²m nßzvem ve svΘm programu. U program∙ majφcφ vφce t°φd, je pou₧itφ balφk∙ samoz°ejmostφ, ale i kdy₧ vßÜ program mß pouze jednu nebo dv∞ t°φdy, m∙₧ete je takΘ pou₧φvat. My jsme nikdy v naÜich programech nespecifikovali v jakΘm balφku mß t°φda b²t. Pokud se nßzev nezadß, automaticky je t°φda p°i°azena do balφku, ve kterΘm jsou vÜechny t°φdy bez zadanΘho p°φkazu package, tzv. implicitnφ balφk. A koneΦn∞ se dostßvßme k tomu jak balφk pojmenovat, nßsledujφcφ p°φkaz to ukazuje:
Pro umφst∞nφ t°φdy do balφku slou₧φ p°φkaz package. V tomto p°φklad∞ jsme vytvo°ili t°φdu nazvanou MojeTrida a umφstili ji do balφku s nßzvem mujBalik. To znamenß, ₧e t°φda musφ b²t v adresß°i s nßzvem, kter² je shodn² s nßzvem balφku, ...\mujBalik\MojeTrida.java. Na adresß° ve kterΘm je slo₧ka mujBalik musφ ukazovat prom∞nnß prost°edφ CLASSPATH. Pokud prom∞nnß prost°edφ ukazuje na pracovnφ adresß°, ve kterΘm je slo₧ka mujBalik, staΦφ napsat pro p°eklad t°φdy javac mujBalik.MojeTrida.java. Nakonec si °ekneme n∞co o konvenci pro pojmenovßnφ balφk∙. Balφky lze pojmenovat podle internetovΘ domΘny, ze kterΘ pochßzejφ, ale nßzev zaΦφnß odzadu, nap°. org.xml.sax, je balφk sdk-1.4.1. Pokud nechcete pou₧φt balφk nap°. mimo firmu, lze ho pojmenovat libovoln∞, ale prvnφ pφsmeno nßzvu by m∞lo b²t malΘ a prvnφ slovo by n∞m∞lo b²t java, proto₧e je to rezervovan² nßzev pro standardnφ Java t°φdy. Mo₧nΘ nßzvy jsou:
dvorak.io Specifikßtory p°φstupu JeÜt∞ ne₧ zaΦnu vyst∞lovat deklarace t°φd, m∞li bychom probrat specifikßtory p°φstupu. Existujφ Φty°i specifikßtory p°φstupu a to public, protected, implicitnφ a private. Slo₧ka majφcφ specifikßtor public je p°φstupnß komukoli odkudkoli. Pokud budete mφt ve vaÜφ t°φd∞ public metodu, m∙₧e ji volat kterßkoli t°φda, t°eba z ·pln∞ jinΘho balφku. Tento specifikßtor se v∞tÜinou nepou₧φvß pro prom∞nnΘ. Protected majφ slo₧ky ke kter²m lze p°istupovat v rßmci svΘ t°φdy, stejnΘho balφku a potomk∙. Pokud potomci t°φdy, ve kterΘ je takto oznaΦenß slo₧ka, nele₧φ ve stejnΘm balφku, nevadφ to. Ale nelze k tΘto slo₧ce p°istupovat z jinΘho balφku, ani₧ by p°istupujφcφ t°φda byla potomkem. Implicitnφ (defaultnφ) je pokud u slo₧ky ₧ßdn² specifikßtor p°φstupu neuvedete. K takto oznaΦenΘ slo₧ce lze p°istupovat pouze v rßmci t°φdy a balφku, ₧adnφ potomci, tedy pokud nejsou ve stejnΘm balφku. Private jsou oznaΦeny slo₧ky ke kter²m m∙₧eme p°istupovat pouze ve t°φd∞, ve kterΘ jsou deklarovßny. V∞tÜinou se takovΘ slo₧ky pou₧φvajφ tak, ₧e public metody, kterΘ jsou p°φstupnΘ z venku, volajφ nap°φklad n∞kolik private metod, t°eba k r∙zn²m meziv²poΦt∙m. Ale samotnΘ private metody by byly pro vn∞jÜφ sv∞t nezajφmavΘ. Nakonec si ·kß₧eme tabulku, ve kterΘ jsou vÜechny specifikßtory porovnßny.
Implicitnφ specifikßtor p°φstupu se nastavφ pokud ₧ßdn² nezadßte. Zatφm si nelamte hlavu s vyu₧itφm specifikßtor∙ p°φstupu, ale je dobrΘ v∞d∞t, ₧e existujφ, proto₧e p°i v²kladu o t°φdßch (kter² bude docela dlouh² a na vφce dφl∙) na n∞ mnohokrßt p°ijde °eΦ. T°φdy NejlepÜφ asi bude zaΦφt deklaracφ t°φdy a vysv∞tlit jednotlivΘ polo₧ky.
Toto je nejjednoduÜÜφ deklarace t°φdy. KlφΦovΘ slovo class vyjad°uje, ₧e se jednß o deklaraci t°φdy. Identifikßtorem se specifikuje nßzev t°φdy, pro n∞j nelze zvolit ₧ßdnΘ z klφΦov²ch slov, stejn∞ jako pro ₧ßdn² jin² identifikßtor :-). T∞lo t°φdy obsahuje v∞ci pro jejφ po₧adovanou funkΦnost, deklarace prom∞nn²ch, metod ale i t°eba dalÜφch t°φd. DalÜφ mo₧nΘ rozÜφ°enφ deklarace t°φdy je o tzv. modifikßtory. M∙₧e to b²t jeden z public, protected, private a/nebo abstract, static, final, strictfp. Ne vÜechny lze pou₧φt ve vÜech situacφch. N∞kterΘ z mo₧nostφ jsou uvedeny v p°φkladu, kter² nßsleduje...
Modifikßtor z prvnφ skupiny (public, protected a private) lze vybrat pouze jeden, ale u druhΘ skupiny (abstract, static, final a strictfp) jich m∙₧ete vybrat vφce. Pokud mß t°φda vφce modifikßtor∙, je lepÜφ nejd°φve napsat modifikßtor z prvnφ skupiny a a₧ potom dalÜφ z druhΘ, nenφ to vy₧adovßno, ale bude to Φiteln∞jÜφ pro ostatnφ. Nedivte se, ₧e jste se nic o jednotliv²ch modifikßtorech nedov∞d∞li. N∞kterΘ lze pou₧φt pouze u vnit°φch t°φd, ale ty jsme neprobφrali, proto a₧ se na n∞ dostane, samoz°ejm∞ jednotlivΘ modifikßtory vysv∞tlφm. Zßv∞r V tomto dφle jsme probrali vφce v∞cφ, ale jen tak povrchn∞. P°φÜt∞ budeme pokraΦovat o t°φdßch, vrßtφme se i k p°φkaz∙m package a import a jejich vyu₧itφ v praxi. |
||||||||||||||||||||||||||||||||||||||||