SORU
2 Aralık 2012, Pazar


Röportaj: soyut sınıf örneğini Alabilir miyiz?

Görüşmeci istedi - soyut bir sınıf örneğini Alabilir miyiz? Hayır dedim. Bana dedi - Yanlış yapabiliriz.

Bu konuda biraz tartıştım. O zaman bana bunu evde kendiniz deneyin dedi.

abstract class my {
    public void mymethod() {
        System.out.print("Abstract");
    }
}

class poly {
    public static void main(String a[]) {
        my m = new my() {};
        m.mymethod();
    }
}

Burada, sınıf ve arama yöntemi soyut sınıf benim örnek yaratıyorum. Biri bana bunu açıklayabilecek olan var mı? Gerçekten yanlış yaptığım görüşme sırasında mıydım?

CEVAP
2 Aralık 2012, Pazar


Burada, benim sınıf örneği yaratıyorum

Hayır, burada soyut bir sınıf örneği oluşturma. Daha doğrusu bir örneğini oluşturuyorsunuzanonim alt sınıfısoyut sınıf. Ve sonra senin yöntemini çağırmasoyut sınıfbaşvuru işaretalt nesne.

Bu davranış açıkça JLS - Section # 15.9.1 listede: -

Eğer sınıf örneği oluşturma anlatım sınıf bir vücut, daha sonra sona ererse sınıf örneği isimsiz bir sınıftır. Sonra:

  • Eğer T bir sınıf gösterir, daha sonra sınıf T adlı anonim doğrudan bir alt sınıf ilan etti. Eğer derleme zamanı hatasıdır sınıf T ile belirtilen son sınıf.
  • Eğer T arabirimi gösterir, sonra arabirim T adlı uygulayan Nesne anonim doğrudan bir alt sınıf ilan etti.
  • Her iki durumda da, alt bedeni ClassBody sınıf örneği oluşturma deyim verilir.
  • Sınıf örneği anonim sınıfıdır.

Vurgu benim.

Ayrıca, ** 16 yaşında, hakkında bilgi edinebilirsinizNesne Oluşturma İşlemi. O bir açıklamada şöyle demişti: -

Yeni bir sınıf örneği oluşturulduğunda, bellek alanı tahsis edilir bunun için tüm örnek değişkenleri sınıftaki ilan için yer ile türü ve örnek değişkenleri her üst sınıfta ilan sınıf türü, gizli olacak, örnek değişkenleri de dahil olmak üzere.

Yeni oluşturulan bir nesne için bir başvuru döndürülür hemen önce gibi sonuç, belirtilen oluşturucu yeni bir başlatmak için işlenir nesne aşağıdaki prosedürü kullanarak:

Ben verilen linke hakkında tam prosedürü okuyabilirsiniz.


Neredeyse sınıfın örneği bir olduğunu görmek içinAnonim Alt Sınıfısadece iki sınıflarını derlemek gerekiyor. İki farklı dosyaları bu dersleri koymak varsayalım:

My.java:

abstract class My {
    public void myMethod() {
        System.out.print("Abstract");
    }
}

Poly.java:

class Poly extends My {
    public static void main(String a[]) {
        My m = new My() {};
        m.myMethod();
    }
}

Şimdi, her iki kaynak dosyaları derlemek:

javac My.java Poly.java

Kaynak kodu derlenmiş dizini şimdi, aşağıdaki sınıf dosyaları göreceksiniz:

My.class
Poly$1.class  // Class file corresponding to anonymous subclass
Poly.class

Bu sınıf Poly$1.class bkz. Sınıf dosyası aşağıdaki kod örneği kullanarak, anonim alt karşılık: derleyici tarafından oluşturulan

new My() {};

Yani farklı bir sınıf örneği var ortada. Sınıf derleyici tarafından derleme sonra verilen ad sadece.

Genel olarak, sınıfındaki tüm anonim sınıfları bu şekilde adlandırılacaktır:

Poly$1.class, Poly$2.class, Poly$3.class, ... so on

Bu sayılar bu anonim sınıfları kapsayan sınıf görünme sırasını göstermek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012