Java: Modifikátory přístupu
Z MiS
(Rozdíly mezi verzemi)
m (Oprava odkazu na stránku s OOP) |
(Přidán běžný význam, opraveny chyby) |
||
| Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | ||
| − | Upravují přístup k metodám a atributům třídy. | + | Upravují přístup k metodám a atributům třídy. Říkají, kdo (které třídy) mohou volat metody resp. přistupovat k atributům třídy. |
| + | |||
| + | == Význam modifikátorů == | ||
; <code>private</code> | ; <code>private</code> | ||
| − | * | + | * Přístup pouze z dané třídy. |
* Žádná jiná třída nemůže přistupovat. | * Žádná jiná třída nemůže přistupovat. | ||
| − | |||
; <code>protected</code> | ; <code>protected</code> | ||
| − | * Přístup mají navíc potomci třídy (třídy, které | + | * Přístup mají navíc potomci třídy (subclass, třídy, které dědí tuto třídu). |
* Viz [[Objektově orientované programování|OOP — dědičnost]]. | * Viz [[Objektově orientované programování|OOP — dědičnost]]. | ||
; <code>public</code> | ; <code>public</code> | ||
| − | * Přístupnost z libovolné třídy | + | * Přístupnost z libovolné třídy. |
* Libovolné třídy mohou přistupovat k tomuto atributu/metodě. | * Libovolné třídy mohou přistupovat k tomuto atributu/metodě. | ||
| + | ; Žádný modifikátor | ||
| + | * Pokud neuvedeme žádný modifikátor, mají přístup třídy ve stejném balíčku (package). | ||
Více viz: [http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html Dokumentace Javy]. | Více viz: [http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html Dokumentace Javy]. | ||
| + | |||
| + | == Běžné použití == | ||
| + | |||
| + | ; Třídy | ||
| + | * v jednoduchých projektech většinou používáme s modifikátorem <code>public</code> | ||
| + | * vyjímečně bez modifikátoru, když se jedná o pomocnou třídu, kterou nemá být vidět mimo náš balíček | ||
| + | |||
| + | ; Atributy | ||
| + | * běžně bychom s atributy měli pracovat, jako by byly <code>private</code> | ||
| + | * v objektovém programování by třída měla vždy své atributy upravovat sama ([[Objektově_orientované_programování#Rysy_OOP|zapouzdření ~ ''encapsulation'']]) | ||
| + | * Často se ale atributy uvádí bez modifikátoru, čímž jsou teoreticky přístupné ze tříd daného balíčku. | ||
| + | |||
| + | ; Metody | ||
| + | * Zde využijeme všechny varianty modifikátorů. Je třeba rozhodnout, jaký přístup pro danou metodu chceme. | ||
| + | * <code>private</code> pro pomocné metody, které nemají být přístupné z jiných tříd. | ||
| + | * <code>protected</code> pomocné metody, u kterých počítáme s tím, že by je mohly používat i odvozené třídy. | ||
| + | * <code>public</code> metody rozhraní, kterými komunikujeme s dalšími třídami. | ||
Verze z 21. 11. 2013, 08:41
Upravují přístup k metodám a atributům třídy. Říkají, kdo (které třídy) mohou volat metody resp. přistupovat k atributům třídy.
Význam modifikátorů
-
private
- Přístup pouze z dané třídy.
- Žádná jiná třída nemůže přistupovat.
-
protected
- Přístup mají navíc potomci třídy (subclass, třídy, které dědí tuto třídu).
- Viz OOP — dědičnost.
-
public
- Přístupnost z libovolné třídy.
- Libovolné třídy mohou přistupovat k tomuto atributu/metodě.
- Žádný modifikátor
- Pokud neuvedeme žádný modifikátor, mají přístup třídy ve stejném balíčku (package).
Více viz: Dokumentace Javy.
Běžné použití
- Třídy
- v jednoduchých projektech většinou používáme s modifikátorem
public - vyjímečně bez modifikátoru, když se jedná o pomocnou třídu, kterou nemá být vidět mimo náš balíček
- Atributy
- běžně bychom s atributy měli pracovat, jako by byly
private - v objektovém programování by třída měla vždy své atributy upravovat sama (zapouzdření ~ encapsulation)
- Často se ale atributy uvádí bez modifikátoru, čímž jsou teoreticky přístupné ze tříd daného balíčku.
- Metody
- Zde využijeme všechny varianty modifikátorů. Je třeba rozhodnout, jaký přístup pro danou metodu chceme.
-
privatepro pomocné metody, které nemají být přístupné z jiných tříd. -
protectedpomocné metody, u kterých počítáme s tím, že by je mohly používat i odvozené třídy. -
publicmetody rozhraní, kterými komunikujeme s dalšími třídami.