Sınıf düzeyinden erişilebilirliği düşünmeyelim çünkü Class yalnızca Public'e sahip olabilir ve varsayılan olarak Internal'dır. Bunun nedeni, Sınıfın niteliklerinizi (Alanlar veya Özellikler) ve davranışlarınızı (Yöntemler) kapsamasıdır. Bu nedenle, 5 Erişim Değiştiricisini kullanarak Alanlarınıza/Özelliklerinize ve Yöntemlerinize erişimi kısıtlayın. Nesne Düzeyinde düşünmeye başlayalım. Nesne, bir Sınıfın bir örneğidir.
Halk
Aynı Montaj
Üst Nesnenin buna erişimi vardır ve devralma uygulanırsa Alt Nesnenin buna erişimi vardır.
Başka Bir Meclis
Üst Nesnenin buna erişimi vardır ve devralma uygulanırsa Alt Nesnenin buna erişimi vardır.
Dahili
Aynı Montaj
Üst Nesnenin buna erişimi vardır ve devralma uygulanırsa Alt Nesnenin buna erişimi vardır.
Başka Bir Meclis
Erişilemez
Korumalı
Aynı Montaj
Ana Nesnenin buna erişimi yoktur ve Alt Nesnenin buna erişimi yoktur, ancak Alt Sınıf ona erişebilir. Temel olarak, türetilmiş sınıf içinde erişilebilir, ancak nesne üzerinde değil.
Başka Bir Meclis
Ana Nesnenin buna erişimi yoktur ve Alt Nesnenin buna erişimi yoktur, ancak Alt Sınıf ona erişebilir. Temel olarak, türetilmiş sınıf içinde erişilebilir, ancak nesne üzerinde değil.
Korumalı Dahili
Aynı Montaj
Aynı Derlemede devralma uygulanırsa, Ana Nesnenin buna erişimi vardır ve Alt Nesnenin buna erişimi vardır. Ve ayrıca Child Class buna erişebilir.
Başka Bir Meclis
Alt Sınıf ona erişebilir, ancak nesne yok.
Özel
Hiçbiri Object üzerinde ona erişemez.
Nesne açısından konuşuyorum çünkü özel/korumalı/genel/korumalı bir Dahili/Dahili alan veya yönteme sınıf içinde serbestçe erişilebilir. Bu Erişim Değiştiriciler, birileri geliştirdiğiniz sınıfınızdan bir nesne oluşturduğunda ve şimdi onların alanlarınıza veya yöntemlerinize erişmelerini veya bunları değiştirmelerini nasıl kısıtladığınızı ve DLL'nize başvurduklarında kullanıcılara nasıl erişim sağladığınız ortaya çıkar.
*Not: Özel, Korumalı ve Korumalı Dahili Alanlar ve Yöntemler için geçerlidir ancak Sınıflar için geçerli değildir. Sınıf bağlamında konuşuyorum.
Mesajımı az önce türkçeye çevirdim, anlamakta güçlük çekiyorsan özür dilerim.
here is the english version:
Lets not think about the accessibility from the Class Level because Class can only have Public and by default it is Internal. It is because Class encapsulate your attributes(Fields or Properties) and behaviors(Methods). So restrict access to your Fields/Properties and Methods by using the 5 Access Modifiers. Let’s start thinking at Object Level. Object is an instance of a Class.
- Public
- Same Assembly
Parent Object has access to it and Child Object has access to it if inheritance is applied.
- Another Assembly
Parent Object has access to it and Child Object has access to it if inheritance is applied.
- Internal
- Same Assembly
Parent Object has access to it and Child Object has access to it if inheritance is applied.
- Another Assembly
Not accessible
- Protected
- Same Assembly
Parent Object has no access to it and Child Object has no access to it but Child Class can access it. Basically it can be accessible inside derived class but not on object.
- Another Assembly
Parent Object has no access to it and Child Object has no access to it but Child Class can access it. Basically it can be accessible inside derived class but not on object.
- Protected Internal
- Same Assembly
Parent Object has access to it and Child Object has access to it if inheritance is applied in the same Assembly. And also Child Class can access it.
- Another Assembly
The Child Class can access it but no object.
- Private
None can access it on the Object.
I am talking in terms of Object because a private/protected/public/protected Internal/Internal field or method can be freely accessed inside the class. This Access Modifier’s comes into picture when somebody creates an object out of your developed class and now how you are restricting them to access or make changes to your fields or methods and how you are giving access to users when they reference your DLL.
*Note: Private, Protected and Protected Internal applies to Fields and Methods but not Classes. I am talking in the context of Class.