Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 7. diel - Dedičnosť a polymorfizmus

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Benjibs
Člen
Avatar
Benjibs:30.6.2013 21:13

Vie niekto vysvetlit, aký je rozdiel medzi public a protected? 3-krát som to celé cítal,
ale na nic som neprisiel :(

Odpovedať
30.6.2013 21:13
1 + 1 = 2
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovedá na Benjibs
Honza Bittner:30.6.2013 21:16

zkus to počtvrté :P

Odpovedať
30.6.2013 21:16
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Homo
Člen
Avatar
Odpovedá na Benjibs
Homo:30.6.2013 21:20

V jave je protected pojaty trochu jinak nez v ostatnich jazycich, tady se to jiz resilo:
http://www.itnetwork.cz/…0e0712549367

Odpovedať
30.6.2013 21:20
1010011 1000101 1011000
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Benjibs
Kit:30.6.2013 21:26

Protected není vidět mezi balíčky. Jedině pokud tu třídu zdědíš.

Odpovedať
30.6.2013 21:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:1.7.2013 8:59

Toto je úryvok z Tutorial Pointu:

Access Control and Inheritance:

The following rules for inherited methods are enforced:

    Methods declared public in a superclass also must be public in all subclasses.

    Methods declared protected in a superclass must either be protected or public in subclasses; they cannot be private.

    Methods declared without access control (no modifier was used) can be declared more private in subclasses.

    Methods declared private are not inherited at all, so there is no rule for them.

Dajme tomu, že mám abstraktnú triedu Vozidlo, ktorá má protected metódu nastartuj().
Keď založím triedu Auto, ktorá bude dediť od Vozidla, ako bude možné zmeniť modifikátor prístupu (zdedenej metódy nastartuj()) ?
Alebo na to, aby som zmenil modifikátor podľa zmienených pravidiel na z protectd trebárs na public, bude treba metódu reimplementovať?

Editované 1.7.2013 8:59
Odpovedať
1.7.2013 8:59
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Benjibs
Kit:1.7.2013 9:06

Můžeš modifikátor pouze rozšířit, tzn. z protected můžeš udělat public.

Odpovedať
1.7.2013 9:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Benjibs
Kit:1.7.2013 9:16

Zkus psát programy tak, abys protected nepotřeboval. Všechny proměnné private nebo fiendly. Vnější metody public, ostatní private nebo friendly.

Odpovedať
1.7.2013 9:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovedá na Kit
Benjibs:1.7.2013 9:17

Takže jediným spôsobom, ako zmeniť modifikátor niečoho v triede potomka je tú konkrétnu vec reimplementovať? (ak ide o metódu)

U premenných, neexistuje niečo takéto? :
U rodiča:

protected String meno = "Jano";

U potomka:

public meno;

A potom by k premennej meno bol public prístupú.

Odpovedať
1.7.2013 9:17
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Benjibs
Kit:1.7.2013 9:21

Jenže ty nepotřebuješ public přístup k "meno". Neměl bys ho potřebovat.

Odpovedať
1.7.2013 9:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Neaktivní uživatel:9.3.2015 19:53

skvelý článok, skvelo vysvetlený

Odpovedať
9.3.2015 19:53
Neaktivní uživatelský účet
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!