Jaký vliv má specifikátor přístupu třídy na její členy?
Když bude třída internal znamená to, že všichni její členové budou také internal, pokud neuvedu něco jiného?
Díky.
tak za 1) to neni žádnej specifikátor ale modifikátor
2) internal je pro vnitřní použití, je to výchozí nastavení a používá se hlavně u DLL, kde nechceš umožnit přístup z venku
Našel jsem, co jsem hledal, takže si odpovím sám:
| Default | Permitted declared accessibilities
------------------------------------------------------------------
namespace | public | none (always implicitly public)
enum | public | none (always implicitly public)
interface | public | none
class | private | All¹
struct | private | public, internal, private²
delegate | private | All¹
constructor | protected | All¹
interface member | public | none (always implicitly public)
method | private | All¹
field | private | All¹
user-defined operator| none | public (must be declared public)
¹ All === public, protected, internal, private, protected internal
² structs cannot inherit from structs or classes (although they can, interfaces), hence protected is not a valid modifier
jen pozor, že třída nemá modifikátor private, ale internal (ve výsledku je to prakticky stejný)
a nezmění, všechny modifikátory musíš měnit ručně, nic se ti nenastaví automaticky v závisloti na nějakým nadřazeným modifikátoru... čili když změníš třídu na public, tak členy budou stále private
a doporučuju psát všude modifikátory.. i když to někde bere jako výchozí private, tak tomu ještě ručně dopsat private, je to pak na první pohled jasný
a smysl je v tom, že privátní členy třídy nejsou viditelný z venku nebo u dědičnosti, jsou použitelný pouze pro potřeby třídy
těch modifikátorů je hodně a né všechny se používají u třídy, u inst. proměnných nebo u funkcí, takže tohle by bylo delší téma, ale stručně...
public - třída půjde vidět i mimo projekt (třeba z knihovny - dll)
internal - třída bude vidět pouze v projektu
static - od třídy nepůjde vytvořit instance a ani nepůjde dědit
abstract - opět od třídy nepůjde vytvořit instance, ale půjde dědit (používá se pouze u dědičnosti a když je to potřeba)
sealed - třída nejde dědit
partial - třída bude částečná (lze vytvořit víc tříd se stejným jménem - při kompilaci se spojí v jednu)
samozřejmě nekterý modifikátory jdou spojovat, třeba jako public static class
- u inst. proměnných máš zas trochu jiný modifikátory:
public, protected, private, static, readonly, const
- u funkcí opět trochu jiný:
public, protected, private, abstract, virtual, sealed, static, override
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku