Sınıfların karmaşık veri türleri olduğu gerçeğinden daha önce bahsetmiştik. Şimdi biraz sınıfların diğer tarafından, sınıfların Java makinesi tarafından nasıl işlendiği hakkında konuşalım. Java'da her şeyin bir nesne, hatta bir sınıf olduğunu unutmayın. Bir sınıf bir nesnedir. Bu seni şaşırttı mı? O zaman devam edelim.
Bir sınıfın belleğe yüklenmesi
Aslında, bir sınıf belleğe yüklendiğinde, üç özel "nesne" yaratılır:
Resmin kısa açıklaması:
Sarı dikdörtgen:
Kod dosyası diskte ".class" uzantılı bir dosya olarak saklanır. Sınıf, alanları ve yöntemleri ile bayt kodunda derlenen yöntemlerin kaynak kodu hakkında bilgiler içerir.
Turuncu dikdörtgen:
Java makinesi bir sınıfı belleğe yüklediğinde, bayt kodunu bilgisayarın işlemcisine ve işletim sistemine özgü makine koduna derler. Bu makine koduna yalnızca Java makinesinin erişimi vardır. Java programcıları olarak ona erişimimiz yok.
Yeşil dikdörtgen:
Java makinesi, sınıfın tüm statik değişkenlerini ve yöntemlerini içeren bir nesne oluşturur. Sınıf adını kullanarak bu "nesneye" erişirsiniz.
Örneğin, yazdığınızda , sınıfta bulunan statik değişkene atıfta bulunuyorsunuz . Bu nesne bizim yeşil dikdörtgenimiz. Statik değişkenin depolandığı yer burasıdır .java.lang.Math.PI
PI
java.lang.Math
java.lang.Math
PI
Mavi dikdörtgen:
Java makinesi bir sınıfın kodunu belleğe yüklediğinde, java.lang.Class
yüklenen sınıfla ilgili bilgileri depolayan özel bir nesne oluşturur: adı, yöntem adları, alan adları ve türleri vb.
"Sınıf" adı biraz kafa karıştırıcı olabilir. Bu sınıf sadece yüklenen sınıf hakkında bazı bilgileri sakladığından, ClassInfo olarak adlandırmak daha mantıklı olacaktır.
Herhangi bir tür için Class nesnesini aşağıdaki gibi bir komut kullanarak elde edebilirsiniz:
Class name = ClassName.class;
Örnekler:
kod | Not |
---|---|
|
Sınıf Class hakkında bilgi içeren bir nesne alınString |
|
Sınıf Class hakkında bilgi içeren bir nesne alınObject |
|
Sınıf Class hakkında bilgi içeren bir nesne alınInteger |
|
türü Class hakkında bilgi içeren bir nesne alınint |
|
türü Class hakkında bilgi içeren bir nesne alınvoid |
getClass()
Ayrıca, her nesnenin sınıftan miras aldığı bir yöntemi olduğundan, herhangi bir nesneden bir sınıf tanımlama nesnesine referans alabilirsiniz Object
.
Örnekler:
kod | Not |
---|---|
|
ile aynı nesneString.class |
|
ile aynı nesneInteger.class |
|
ile aynı nesneBoolean.class |
GO TO FULL VERSION