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

  • filmurfreakur

    filmurfreaku

    29 Mart 2007
  • kimaliz

    kimaliz

    18 Temmuz 2006
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012