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

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012