Dobry den pan Herout, mam zopar poznamok ku kapitole 12.3 Pristupova prava. (poznamky vznikli na zaklade mojich nejasnosti, ktore snad spravne odstranila Thinking in Java, kapitola 5 Hiding Implementation, cast Java access specifiers). Z Vami prezentovaneho vykladu v tejto casti (kapitola 12.3) mi totiz nebolo jasne, aky je rozdiel medzi specifikatorom pristupu "protected" a "neuvedeno" (oba maju v tabulke na str. 206 vo Vasej knihe rovnake zaznamy, takze preco su to dva rozdielne specifikatory pristupu, preco nie su zlucene?) 1. Na strane 206 sa nachadza tabulka specifikatorov pristupu. Kvoli lepsej prehladnosti o ich sile by som prehodil riadky 2 a 3 (prehodit "protected" a "neuvedeno"), pretoze specifikator protected je menej restriktivny (vid bod 2). (zaroven sa tak dosiahne synchronizacia riadkov (co sa tyka prveho stlpca) s tabulkou na strane 211) Dalej by mozno bolo vhodne dat do ZATVORIEK za specifikator "neuvedeno" slovo "friendly" v uvodzovkach (tak, ako je to v Thinking in Java, aby sa nejako rozlisilo, ze je to iny specifikator pristupu ako protected) 2. Kapitola 12.3.2 specifikator "protected". Vsetko co je tam o nom napisane, je pravda. Ale clovek tam nenajde odpoved na vyssie polozenu otazku z uvodu (aky je rozdiel medzi specifikatorom pristupu "protected" a "neuvedeno"). Do tejto kapitoly by som teda doplnil toto: Specifikator protected sa pouzije vtedy, ak chcem(e) povolit zdedenie a pouzitie metod (clenov) danej triedy v triede, ktora je definovana v INOM baliku. Celkom pekne je to vysvetlene v Thinking in Java v hore menovanej casti a myslim si, ze je to dost dolezite, aby sa to objavilo aj vo Vasej knihe. Z danej poznamky k specifikatoru pristupu "protected" vyplyva, ze je menej restriktivny ako specifikator pristupu "neuvedeno", lebo ak pouzijem specifikator pristupu "neuvedeno", mozem dedit a pouzit metody(cleny) nejakej triedy len v tom istom baliku (toto je nakoniec aj napisane o specifikatore pristupu "neuvedeno" v kapitole 12.3.4 hned prvy odstavec, strana 210) Zdravim Ing. Peter Krútel Dobry den pan Herout k tomu vcerajsiemu mailu Vam posielam este nasledovny studijny material. Jedna sa o projekt v JBuilderi Foundation, ktory rozlisuje dva pristupy ako chapat specifikatory pristupu: 1. Ako sa da pristupovat k metodam (clenom) triedy A, ak vytvorim instanciu triedy A v inej triede B, ktora je bud v tom istom baliku ako trieda A alebo v inom (tento pristup by som nazval "PRISTUP K METODAM (CLENOM) TRIEDY CEZ REFERENCNU PREMENNU V RAMCI BALIKA A MIMO NEHO") 2. Iny sposob pristupu je, ze CO SA ZDEDI A JE POUZITELNE Z TRIEDY "A" DO TRIEDY "C", ak je trieda C v tom istom alebo inom baliku a trieda C je odvodena z triedy A. (zdedia sa vzdy vsetky metody (cleny) rodicovskej triedy, ale v odvodenej triede sa nedaju pouzit napr. metody (cleny) so specifikatorom pristupu typu private -> ich pouzitie je zakazane). Tento pristup by som nazval "PRISTUP K METODAM (CLENOM) TRIEDY B, KTORA JE ODVODENA Z TRIEDY "A" A TATO TRIEDA "A" JE V TOM ISTOM ALEBO INOM BALIKU AKO TRIEDA "B" " Tieto dva pristupy treba rozlisit! (v knihe sa v kapitole 12.3 implicitne (bez udania o aky pristup sa jedna) venujete len bodu 1). A tu sa opat dostavam k specifikatoru pristupu typu "protected". Tento ma vyznam len v bode 2, t.j. pri DEDICNOSTI a to konkretne pri dedicnosti medzi triedami v roznych balikoch. Preto je dost "matouci" :-) ho uvadzat v kapitole 12.3.2 bez blizsieho vysvetlenia, ze je relevantny len vtedy, ak chceme povolit dedenie a pouzitie danej metody (clena) aj triede, ktora je mimo balika v inom baliku (Ak sa "protected" pouzije ako modifikator pristupu podla bodu 1, vtedy je zhodny s identifikatorom typu "neuvedeno") Podobne je to aj v C++ - prve hladisko je, k akym metodam (clenom) triedy mam zvonku pristup, ak mam instanciu triedy (vtedy idu pouzit len metody (cleny) so specifikatorom typu "public") a druhe hladisko je, co a ako sa mi zdedi z rodicovskej triedy a ako to mozem v odvodenej triede pouzit (opat sa zdedi vsetko, ale nie ku vsetkemu sa da pristupit, v C++ to este trosku komplikuje dedenie typu public alebo private, kde sa implicitne menia modifikatory pristupu) V prikladoch si davajte postupne ako hlavnu triedu tu, pri ktorej napisane, ze testuje bod 1 az 4. Zdrojove subory su v adresari src\Balik_X Zdravim _______________________________________________________________ Ing. Peter Krútel SWH s.r.o., Bratislava, Slovakia