C# protected neden kullanılır ?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
6 Ocak 2022
Mesajlar
175
Tepki puanı
7
Yaş
23
4 HİZMET YILI
Tüm blog yazılarında ne işe yaradığı ve nasıl kullanıldığı yazılmış ama hiçbiryerde neden kullanıldığı yazılmamış. Sadece temel ve miras alınan sınıftan erişilebilir diyor fakat zaten başka bi yerden nasıl erişebiliriz ? Başka bir sınıftan erişme gibi birşey yok geliyor aklıma ama zaten başka bir sınıftan başka bir sınıfın değişkenini nasıl değiştireceğiz ki ? Yani protected in engellediği bir örnek atabilirseniz çok iyi olur.
 
Onaylı Üye
Katılım
2 Tem 2021
Mesajlar
57
Tepki puanı
13
Ödüller
4
Yaş
24
4 HİZMET YILI
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.

  1. Public
    1. Same Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
    2. Another Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
  2. Internal
    1. Same Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
    2. Another Assembly
      Not accessible
  3. Protected
    1. 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.
    2. 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.
  4. Protected Internal
    1. 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.
    2. Another Assembly
      The Child Class can access it but no object.
  5. 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.
 
𐱅 𐰇 𐰼 𐰰
Ultra Üye
Katılım
15 Ara 2019
Mesajlar
1,531
Çözümler
8
Tepki puanı
161
Ödüller
8
6 HİZMET YILI

C# protected neden kullanılır: C# programlama dilinde oluşturulan uygulamaların güvenliğini artırmak için, kullanılan sınıfların (class) erişilebilirliğinin kısıtlanması gerekmektedir. ... Kod içinde bir değerin protected olarak tanımlanması; o değere, bulunduğu class ve ondan türetilen diğer sınıflar içinden erişilebilir olduğunu göstermektedir.​

Kaynak:
Bağlantıları görmek için lütfen Giriş Yap
 
Seçkin Üye
Katılım
22 Kas 2020
Mesajlar
315
Çözümler
1
Tepki puanı
95
Ödüller
3
5 HİZMET YILI
Düşününce aklıma örnek gelmedi ama her yerden erişilmesini istemediğin, sadece belirli yerden erişmek istediğin methodlara koyup güvenliği arttırabilirsin.

Diyelim banka uygulaması yapıyorsun

gibi bir methodun var, bu method ana classın içinden değilde sadece bir aracı classtan erişilebilir olmasını isyetebilirsin.

Örnek 3 tane classımız var diyelim.

AnaClass.cs
OdemeAltyapisi.cs
OdemeAraclari.cs

Ödeme araçlarında şöyle bir kod kullanabiliriz.
C#:
protected void OdemeYap() { }

ve bunun sadece ÖdemeAltyapisi.cs classından erişilebilir olmasını sağlayabiliriz, yani aslında bu classı aracı yapıyoruz. ödemeyap() methodu anaclassdan erişilebilir olmamalı. Sadece aracılardan erişilebilir olmalı
 
BİR TÜRK
Süper Üye
Katılım
14 Haz 2016
Mesajlar
603
Çözümler
1
Tepki puanı
44
Ödüller
8
Yaş
26
9 HİZMET YILI
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.

  1. Public
    1. Same Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
    2. Another Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
  2. Internal
    1. Same Assembly
      Parent Object has access to it and Child Object has access to it if inheritance is applied.
    2. Another Assembly
      Not accessible
  3. Protected
    1. 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.
    2. 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.
  4. Protected Internal
    1. 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.
    2. Another Assembly
      The Child Class can access it but no object.
  5. 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.
çok iyi açıklamış sagolasın
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst