Modifikátory přístupu - Access modifiers
tento článek potřebuje další citace pro ověření.Březen 2013) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Modifikátory přístupu (nebo specifikátory přístupu) jsou klíčová slova v objektově orientované jazyky které nastavují přístupnost tříd, metod a dalších členů. Modifikátory přístupu jsou specifickou součástí syntaxe programovacího jazyka používaného k usnadnění zapouzdření komponent.[1]
v C ++, existují pouze tři modifikátory přístupu. C# rozšiřuje jejich počet na šest,[2] zatímco Jáva má čtyři modifikátory přístupu,[3] ale tři klíčová slova pro tento účel. V Javě nemá žádné klíčové slovo před výchozím nastavením modifikátoru soukromého balíčku.
Když je třída deklarována jako veřejná, je přístupná dalším třídám definovaným ve stejném balíčku i těm definovaným v jiných balíčcích. Toto je nejčastěji používaný specifikátor pro třídy. Samotnou třídu však nelze deklarovat jako soukromou. Pokud není uveden žádný specifikátor přístupu, použijí se výchozí omezení přístupu. Třída bude přístupná pro ostatní třídy ve stejném balíčku, ale bude nepřístupná pro třídy mimo balíček. Když řekneme, že třída je nepřístupná, jednoduše to znamená, že nemůžeme vytvořit objekt této třídy nebo deklarovat proměnnou daného typu třídy. Specifikátor chráněného přístupu také nelze použít na třídu.
Názvy klíčových slov
C ++ používá tři volané modifikátory veřejnost
, chráněný
, a soukromé
.[4] C# má modifikátory veřejnost
, chráněný
,vnitřní
, soukromé
, chráněné interní
, a soukromé chráněné
. Jáva má veřejnost
, balík
, chráněný
, a soukromé
. Modifikátor přístupu balík
je výchozí a použije se, pokud chybí jiné klíčové slovo modifikátoru přístupu. Význam těchto modifikátorů se může v jednotlivých jazycích lišit. Následuje srovnání klíčových slov seřazených od nejvíce omezujících po nejotevřenější a jejich významu v těchto třech jazycích. Jejich viditelnost se pohybuje od stejné třídy po balíček, kde je třída definována, až po obecné přístupové oprávnění. Níže je maximální přístup zapsán do tabulky.
Klíčové slovo | C# | C ++ | Jáva |
---|---|---|---|
soukromé | třída | třída a / nebo třídy přátel | třída |
soukromé chráněné | odvozené třídy ve stejné sestavě | - | - |
chráněné interní | stejná sestava a / nebo odvozené třídy | - | - |
chráněný | odvozené třídy | odvozené třídy a / nebo třídy přátel | odvozené třídy a / nebo ve stejném balíčku |
balík | - | - | v rámci svého balíčku |
vnitřní | stejná sestava | - | - |
veřejnost | všichni | všichni | všichni |
Příklad v C ++
#zahrnout <iostream>#zahrnout <conio.h>použitím std::cout;použitím std::konec;struktur B { // výchozí modifikátor přístupu uvnitř struktury je veřejný prázdnota set_n(int proti) { n = proti; } prázdnota F() { cout << "B :: f" << konec; } chráněný: int m, n; // B :: m, B :: n jsou chráněny soukromé: int X;}; struktur D : B { použitím B::m; // D :: m je veřejné int get_n() { vrátit se n; } // B :: n je přístupný zde, ale ne venku// int get_x () {return x; } // CHYBA, B :: x je zde nepřístupná soukromé: použitím B::F; // D :: f je soukromý}; int hlavní() { D d;// d.x = 2; // CHYBA, soukromá// d.n = 2; // CHYBA, chráněná d.m = 2; // chráněný B :: m je přístupný jako D :: m d.set_n(2); // volá B :: set_n (int) cout << d.get_n() << konec; // výstup: 2// d.f (); // ERROR, B :: f je nepřístupný jako D :: f B& b = d; // b odkazuje na d a „prohlíží“ jej jako typ B.// b.x = 3; // CHYBA, soukromá// b.n = 3; // CHYBA, chráněná// b.m = 3; // CHYBA, B :: m je chráněna b.set_n(3); // volá B :: set_n (int)// cout << b.get_n (); // ERROR, 'struct B' has no member named 'get_n' b.F(); // volá B :: f () vrátit se 0;}
Reference
Poznámky
- ^ Mayo 2002, str. 199.
- ^ Wagner, Bille. „Modifikátory přístupu - Průvodce programováním v C #“. docs.microsoft.com. Citováno 2020-01-13.
- ^ "Modifikátory přístupu v Javě". Javapapers. Citováno 2020-01-13.
- ^ "Specifikátory přístupu". en.cppreference.com. Citováno 2020-01-13.
Bibliografie
- Mayo, Joseph (2002), C Sharp Unleashed, Vydavatelství Sams, ISBN 9780672321221