Menu

Java Sınıfları: Alan, Metot ve Nesne Tanımlama

Java sınıfının ne olduğu, alanların ve metotların nasıl tanımlanacağı, new ile nesne oluşturma, this'in rolü ve örnek durumunun neden nesnede tutulduğu.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Sınıf Bir Taslaktır

Şimdiye kadar kodunuz, düz değerleri oradan oraya aktaran metotların içinde yaşadı. Bir sınıf, ilişkili verileri ve onların üzerinde çalışan davranışı tek bir adlandırılmış tür altında bir araya getirmenizi sağlar. Sınıf taslaktır; üzerinde çalıştığınız gerçek şeyler ise ondan oluşturulan nesnelerdir.

Bir sınıf iki tür üye bildirir: alanlar (her nesnenin tuttuğu veriler) ve metotlar (her nesnenin yapabilecekleri).

new Dog() bellekte bir nesne inşa eder ve size ona bir referans verir. d.name ve d.bark() o belirli nesneye erişir.

Her Nesnenin Kendi Durumu Vardır

Bir sınıfın bütün amacı, her biri kendi alan değerlerini taşıyan birçok bağımsız nesne üretebilmenizdir. Birini değiştirmek asla bir başkasına dokunmaz.

rex ve bella iki ayrı nesnedir. Her birinin kendi name alanı vardır, dolayısıyla her bark() farklı bir değer yazdırır. Nesne başına tutulan bu veriye örnek durumu denir.

Alanlar ve Metotlar Birlikte Çalışır

Bir sınıf içindeki metotlar, o nesnenin kendi alanlarını doğrudan okuyup güncelleyebilir; onları parametre olarak geçirmeye gerek yoktur. Metot zaten verisine dokunduğu nesnenin "üzerinde yaşar".

increment() metodunun hiç argüman almadığına dikkat edin. Onu çağırdığınız Counter'a ait alan üzerinde çalışır. İşte bir sınıf metodu ile başıboş bir statik metot arasındaki fark budur: metodun üzerinde işlem yapacağı örtük bir nesnesi vardır.

this Anahtar Sözcüğü

Bir metodun içinde this, metodun üzerinde çağrıldığı nesneye bir referanstır. Genellikle ona ihtiyacınız olmaz; count yazmak zaten this.count anlamına gelir. Ancak bir parametre adı bir alan adıyla çakıştığında this vazgeçilmez hale gelir ve bu, setter'larda ve kurucularda sürekli olarak yaşanır.

Yeni başlayanların sıkça yaptığı bir hata, move içinde x = x; yazmaktır. Bu yalnızca parametreyi kendisine atar ve alanı el değmeden bırakır; derleyici sizi uyarmaz ve nesneniz sessizce eski değerlerini korur. Alanı asıl güncelleyen şey this.x = x; ifadesidir.

Varsayılan Alan Değerleri ve null Referanslar

Bir nesne oluşturduğunuzda alanları çöp değerlerle kalmaz; Java onları varsayılan değerlere ayarlar: sayılar için 0, boolean için false ve String gibi nesne referansları için null. Bu null varsayılanı, klasik bir çökmenin kaynağıdır.

Kimse atamadığı için u.name değeri null'dur, dolayısıyla onun üzerinde .length() çağırmak bir NullPointerException fırlatır. Bir nesnenin alanlarını kullanmadan önce ona her zaman anlamlı değerler atayın; bu da tam olarak kurucuların çözdüğü sorundur.

Kodu Sınıflar Etrafında Düzenlemek

Gerçek programlar, verilerini ve onlar üzerindeki işlemleri bir arada tutan sınıflar olarak alanlarını modeller. Burada tek bir BankAccount sınıfı bir bakiyeyi tutar ve onun nasıl değiştiğini denetler:

Veriler (balance) ve onları değiştirme kuralları (deposit, withdraw) tek bir yerde yaşar. Başka yerlerdeki kod, hesabın sayılarını doğrudan kurcalamak yerine hesaptan bir şeyler yapmasını ister; bu, temiz ve sürdürülebilir tasarımın temelidir.

Sırada: Kurucular

new'den sonra her alanı elle ayarlamak hem can sıkıcı hem de unutması kolaydır ve az önce gördüğünüz gibi, unutulan bir alan çökmeyi bekleyen bir null bırakır. Bir kurucu, bir nesnenin alanlarını oluşturulduğu anda gerekli kılmanıza ve başlatmanıza olanak tanır; böylece bir BankAccount asla bir sahibi olmadan var olamaz. Sıradaki sayfanın konusu budur.

Sıkça Sorulan Sorular

Java'da sınıf nedir?

Sınıf, bir nesne türünün sahip olacağı verileri (alanlar) ve davranışı (metotlar) tanımlayan bir taslaktır. Sınıfın kendisi yalnızca şablondur; gerçek nesneleri ondan new ile oluşturursunuz. Örneğin bir Dog sınıfı her köpeğin bir name alanına sahip olduğunu ve bark() yapabildiğini tanımlar; her new Dog() ise kendi adına sahip ayrı bir köpektir.

Java'da sınıf ile nesne arasındaki fark nedir?

Sınıf tanımdır; nesne ise bu tanımdan new ile inşa edilmiş somut bir örnektir. Tek bir Person sınıfı, her biri kendi alan değerlerini tutan birçok Person nesnesi üretebilir. Sınıfı kurabiye kalıbı, nesneleri de tek tek kurabiyeler gibi düşünün: bir nesnenin alanlarını değiştirmek asla bir başkasınınkini etkilemez.

Java sınıfında this anahtar sözcüğü ne işe yarar?

this, geçerli nesneye, yani metodu çalışmakta olan belirli örneğe işaret eder. Bir nesnenin kendi alanlarına erişmek için, özellikle bir parametre bir alanla aynı ada sahip olduğunda (this.name = name;) kullanılır. this olmadan atama yalnızca parametreyi kendisine atar ve alan değişmeden kalır.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA