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

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • hytchme

    hytchme

    9 Mart 2014
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006