GÜNCELLEME: Bu soru Eylül 2014'teki blogumun konusuydu . Bu mükemmel soru için teşekkürler!
Derleyici ekibinin kendisinde bile bu soru üzerine önemli tartışmalar var.
Öncelikle kuralları anlamak akıllıca olur. Bir sınıfın veya yapının genel üyesi , içeren türe erişebilen her şeye erişebilen bir üyedir . Dolayısıyla, bir iç sınıfın kamu üyesi etkili bir şekilde içseldir.
Şimdi, bir iç sınıf verildiğinde, mecliste erişmek istediğiniz üyeleri herkese açık mı, yoksa dahili mi olarak işaretlenmeli?
Benim düşüncem: bu tür üyeleri halka açık olarak işaretlemek.
"Herkese açık bir uygulama değil" demek için "genel" kullanıyorum. Korunan bir üye uygulama detayıdır; türetilmiş bir sınıfın çalışması için gerekli olan bir şey var. Dahili üye bir uygulama detayıdır; bu meclisin içindeki başka bir şeyin düzgün çalışması için üyeye ihtiyacı vardır. Herkese açık bir üye "bu üye, bu nesne tarafından sağlanan temel, belgelenmiş işlevselliği temsil eder."
Temel olarak benim tutumum: varsayalım ki bu iç sınıfı bir kamu sınıfına dönüştürmeye karar verdim. Bunu yapmak için, tam olarak bir şeyi değiştirmek istiyorum : sınıfın erişilebilirliği. Eğer bir iç sınıfı bir genel sınıfa dönüştürmek demek, bir iç üyeyi de genel bir üyeye dönüştürmek zorunda olduğum anlamına gelirse, o üye sınıfın ortak yüzey alanının bir parçasıydı ve ilk etapta halka açık olması gerekirdi.
Diğer insanlar aynı fikirde değil. Bir üyenin beyanına bakmak istediklerini ve sadece dahili koddan çağrılıp çağrılmayacağını derhal bildiklerini söyleyen bir koşul vardır.
Ne yazık ki, bu her zaman iyi sonuç vermez; örneğin, bir iç arabirimi uygulayan bir iç sınıfın hala uygulayıcı üyelerin halka açık olarak işaretlenmesi gerekir, çünkü bunlar sınıfın kamusal yüzeyinin bir parçasıdır .