SORU
18 HAZİRAN 2014, ÇARŞAMBA


Java statik korumalı kullanmalıyız neden

Bu soru ile Is there a way to override class variables in Java?gidiyordum 36 upvotes İlk Yorum oldu:

Hiç protected static, run.

Herkes neden protected static karşılanmaz açıklayabilir mi?

CEVAP
18 HAZİRAN 2014, ÇARŞAMBA


Daha doğrudan bir sorun daha biçimsel bir şey. Sınıfının ne olduğunu, doğru iyice düşünmediğini de gösteriyor.

Ne static anlamı: düşünmek

Bu değişken sınıf düzeyinde bulunan, ayrı ayrı her bir örnek yokbana uzanan sınıflardan bağımsız bir varlığı yoktur.

Ne protected anlamı: düşünmek

Bu değişken sınıflar aynı paket içinde bu sınıf tarafından görülebilirve bana uzanan sınıfları.

İki anlam tam olarak birbirini dışlayan değil ama oldukça yakın.

Tek dava görebiliyorum nereye kullanabilirsiniz iki arada eğer bir soyut sınıf olarak tasarlanan genişletilmiş ve genişletme sınıf olabilir sonra Değiştir davranışı kullanarak sabitler tanımlanan orijinal. O zaman bile hala neredeyse kesinlikle daha iyi bir ortak olarak sabitler mi olurdu sanki çok zayıf bir sebep. Bu sadece her şeyi daha temiz hale getirir ve insanların alt sınıflandırmaya daha fazla esneklik sağlar.

Ve ilk nokta genişletmek açıklar - bu deneyin örnek kod için:

public class Program {
    public static void main (String[] args) throws java.lang.Exception {
        System.out.println(new Test2().getTest());
        Test.test = "changed";
        System.out.println(new Test2().getTest());
    }
}

class Test {
    protected static String test = "test";
}

class Test2 extends Test {
    public String getTest() {
        return test;
    }
}

Sonuçları göreceksiniz:

test
changed

De kendiniz deneyin: https://ideone.com/KM8u8O

8* *sınıfın statik üye test Test adını nitelemek gerek kalmadan erişmek mümkün ama ya kendi kopyasını miras almaz. Aynı değişken bakıyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • failblog

    failblog

    17 HAZİRAN 2008
  • Google

    Google

    18 EYLÜL 2005
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006