SORU
5 ŞUBAT 2010, Cuma


Neden soyut alanlar değil mi?

Neden Java sınıfları soyut yöntemler olabilir gibi soyut alanları olabilir mi?

Örneğin: aynı soyut temel sınıfı genişleten iki sınıf var Bu iki sınıf her hata iletisi, onların içinde olan bir Dize sabiti hariç aynı olan bir yöntem var. Eğer alanları soyut olabilir, bu sürekli soyut ve yöntemi temel sınıfın içine çekmek olabilir. Bunun yerine, ben oluşturmak için bir özet yöntem, adı getErrMsg() Bu durumda, verir, String, geçersiz kılma bu yöntemi iki türetilmiş sınıfları, ve daha sonra ben yukarı çekin yöntemi (şimdi Arama soyut yöntem).

Neden sadece saha soyut başlamak için gelemedi? Java bu izin vermek için tasarlanmış olabilir mi?

CEVAP
5 ŞUBAT 2010, Cuma


Kurucusu (denenmemiş kodu) başlatıldığını soyut sınıf final bir alana sahip olarak nitelendirdiği yapabilirsiniz:

abstract class Base {

    final String errMsg;

    Base(String msg) {
        errMsg = msg;
    }

    abstract String doSomething();
}

class Sub extends Base {

    Sub() {
        super("Sub message");
    }

    String doSomething() {

        return errMsg   " from something";
    }
}

Eğer çocuk sınıf "" süper kurucu ile son yeniden derleyici verecektir . unutursa ^grev>bir uyarıtıpkı soyut bir yöntem uygulanmadı, bir hata.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Myron and Nejusha dance

    Myron and Ne

    2 AĞUSTOS 2012
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011
  • YAN TV

    YAN TV

    20 EKİM 2011