SORU
14 Mart 2011, PAZARTESİ


Neden Java alt sınıf hayır görünürlük değiştiricisi var mı?

Birden fazla vesileyle Java mümkün olmayan değişken bir görüş isteyen kendimi buldum. Bazı üyeler, dünyanın geri kalanı için paketi geri kalanı için veya herhangi bir alt sınıflar içinde kendi sınıfı içinde, ama görünür olmasını istedim. Diğer bir deyişle, bu istedim:

Modifier        Class     Package   Subclass  World
sub-class       Y         N         Y         N

Ancak, Java tasarımcıları sadece bana this verdi:

Modifier        Class     Package   Subclass  World
public          Y         Y         Y         Y
protected       Y         Y         Y         N
no modifier     Y         Y         N         N
private         Y         N         N         N

Böyle bir şey istediğim zaman, normal durum soyut bir sınıf oluştururken. Bazen soyut üst bazı üyeleri için erişim ihtiyacı buluyorum, ama somut bir çocuk gibi. Üyeler protected, ama gerçekten istemiyorum erişilebilirlik paketi geri kalanı için açılır yaparak onları bu erişim verebilirim.

Tamamen açık olmak gerekirse, böyle bir değiştirici olduğunu biliyorumdeğilOlası Java. Benim sorum böyle bir değiştirici Java dahil değil mi? Görünüyor (bana) ya da protected veya varsayılan daha doğal bir görünürlük düzeyi. Bu satırları yeterince önemli değil sadece birlikte nedeni dahil edilecek, ya da hesaba katmadığımı olası yan etkileri daha fazla ilgilidir?

CEVAP
14 Mart 2011, PAZARTESİ


Doğrusal olmayan erişim hiyerarşisi sağlayarak katma karmaşıklığı önlemek için istiyorlar sanırım.

Bu koruma yöntemleri var deme yani sadece paketi kontrol etmelisiniz.

(Bu arada, protected tamamıyla aynı değildir sub-class and package, statik olmayan koruma yöntemleri (aynı paket) olamaz denilen keyfi nesnelerin ilan sınıfı, ama sadece nesneleri alt sınıfı kodudur. (Sadece kopyalandı olan sınıf tarafından çağrılabilir Object.clone(), Bu görebilirsiniz.))

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006