SORU
14 AĞUSTOS 2015, Cuma


Bir değişken, nesne ve referans arasındaki fark nedir?

Tam olarak nedir arasındaki farklardeğişkenler,nesnelervereferanslar?

Örneğin: onlar her noktaya bir tür, ve onlar gerekir tüm değerleri (sürece, elbette geçici null-mümkün yazın), ama tam olarak nasıl fonksiyonları ve uygulamaları birbirinden farklı?

Örnek:

Dog myDog = new Dog(); //variable myDog that holds a reference to object Dog
int x = 12; //variable x that hold a value of 12

Bunlar aynı kavramlar var, ama ne kadar farklı?

CEVAP
14 AĞUSTOS 2015, Cuma


(Açık konuşalım, burada verdiğim açıklama Java ve C özgüdür#. Bu parçaları olabilir, ancak diğer diller için geçerlidir, düşünmeyin.)

Nerede yaşadığımı söylüyorum birisi bir benzetme kullanmak ister. Bir kağıda adresimi yazmak olabilir:

  • Bir değişken bir kağıt parçası gibi. Bir değeri olmalı, ama kendisi değer değildir. Var ve başka bir şey yazmanı yerine geçebilir.
  • Kağıt parçası üzerine yazmak adresini bir referans gibidir. Burası benim evim değil, ama bir yol vargezinmeevime.
  • Evime kendisi bir nesne gibi. Aynı nesne için çok sayıda başvuru verebilirim, ama sadece tek bir nesne var.

Bu yardımcı olur mu?

Bir değer türü ve başvuru türü arasındaki fark, bir kağıt parçası üzerinde yazılı. Örneğin, burada:

int x = 12;

gibi 12 numaralı doğrudan üzerinde yazılı olan bir kağıt parçası olması. Oysa:

Dog myDog = new Dog();

Köpek kağıt parçası üzerinde içeriğini kendisi nesne yazmaz - yeni Dog oluşturur ve bunu kağıt üzerinde köpek için bir referans yazar.

Olmayan bir benzetme şartları:

  • Bir değişken bellekte bir depolama konumu temsil eder. Hangi derleme anında başvurabilirsiniz bir adı var, ve yürütülmesi sırasında her zaman derleme türü ile uyumlu olacak bir değeri vardır. (Örneğin, eğer bir Button değişken, değeri daima yanında olacağım başvurusu bir nesnenin türü Button ya da bazı alt - veya null başvuru.)
  • Bir nesne ayrı bir varlık türüdür. Önemlisi, bir değişken ya da herhangi bir ifadenin değeriaslabir nesne, sadece bir referans. Bir nesnenin etkin şekilde oluşur:
    • Alanlar (devlet)
    • Yazın bir referans (asla nesne yaşam süresi değişebilir)
    • Bir izleyici (senkronizasyon için)
  • Bir referans değeri bir nesne - örneğin yöntemlerini çağırmak için, vb erişim alanları erişmek için kullanılır. Genellikle . operatörü ile başvuru gidin. Örneğin, eğer foo Person değişken, foo.getAddress().getLength() Ara değer foo (başvuru) ve Ara getAddress() nesne referans ifade eder. Sonuç String bir referans olabilir... biz o nesne üzerinde getLength() bu arabubaşvuru anlamına gelir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • Julia Graf

    Julia Graf

    6 Mayıs 2006