2016-03-27 19 views

cevap

2

Nesneniz derlendiğinde, derleyici yapıcılarınız için bir instance initialization method oluşturur; aşağıdaki gibi sınıfının MyLinkedList için, sınıfın iki versiyonu için derleyici irade yöntemi oluşturun: Eğer new anahtar kelime veya MyLinkedList.class.newInstance() yöntemini kullandığınızda

public void <init>(MyLinkedList this) {...} 

Bu yöntem çağrılır. İlk olarak (aşağıda gösterilen)

  • Örnek Başlatma
  • Oluşturucu ((yukarıdaki ikinci versiyonunda olduğu gibi)

    • Örnek Değişken Başlatma:

      Ayrıca, sizin Nesne başlatmak için üç yol vardır yukarıdaki versiyon)

    Örnek Başlatma:

    private Node head; 
    private int size; 
    
    { 
        Node = new Node(0,null); 
        int = 0; 
    } 
    
    public MyLinkedList(){ 
    
    } 
    

    Derleyici, örnek değişken başlatma kodunu, örnek başlatma kodunu ve kurucu gövde kodunu <init> yöntemine yerleştirecektir. Yeni bir örnek oluşturduğunuzda, derleyicinin yapacağı ilk şey, örnek değişkenleri varsayılan değerlerine ilklendirerek Nesne ve tüm örnek değişkenleri için bellek ayırmaktır. Daha sonra <init> yöntemi denir. Kesin dizi, Java Language Specification:

    'da ana hatlarıyla belirtilmiştir. Bu, verimlilik ve bellek kullanımı ile ilgili bir farkın olmadığı ve kullanım durumunun sizin kullanım durumunuza ve yapılandırmanıza inandığı dikkate alındığı anlamına gelir. Birden fazla kurucu ile, başlatma kodunu çoğaltmanız veya diğer kuruculardan aradığınızdan emin olmanız gerekebilir; örneğin, ilklendirme ile istisnaları yakalayabilir veya örnek değişken başlatması ile gerçekleştiremediğiniz daha karmaşık hesaplamalar yapabilirsiniz. doğrulamak için

    , Eclipse eklentisi Bytecode Outline yükleyebilir ve sınıfın iki sürümleri için çıkan baytkodu talimatları ve sıralarının neredeyse aynı olduğunu görmek:

    Bytecode comparison of the two versions of the MyLinkedList class

  • 1

    ,

    : Her iki değişken geçersiz varsayılan yapıcı 2. durumda

    denir yalnızca başlatılır: çağıran diğer herhangi bir kurucu iki değişkenini başlatacaktır. Bu kurucularda herhangi bir başlatma sağlanmamış olsa bile.

    Yani, bu varsayılan kurucu olan bir ve yalnızca bir kurucunuz varsa, aynı davranırlar. Ancak davranış, başka kurucular varsa değişir.

    İlgili konular