Sınıf alanları
Nesne yönelimli programlamanın özü, programı nesnelerin etkileşimi olarak temsil etmektir.
 
Bir nesne belirli özelliklere ve üzerinde belirli işlemlere sahip bir tür varlıktır.

Nesneler başlangıçta gerçeği simüle etmek için yaratıldı: Çevremizdeki birçok şey bir nesne olarak temsil edilebilir. Örneğin, son zamanlarda okuduğunuz bir kitap, 'ad', 'yazar', 'yaş derecelendirmesi', 'kitabın metni', 'sayfa sayısı' vb. özelliklere sahip bir nesne olarak düşünülebilir. "kitap oku", "kitap yak" gibi işlemleri yapabilir.
Java programlama dili terminolojisinde bu "özellikler" alanlar olarak adlandırılır ve nesneler üzerindeki işlemler yöntemler olarak adlandırılır.
Java statik olarak yazılmış bir dil olduğundan, herhangi bir nesnenin bir kalıba göre oluşturulması gerekir. Java'da bu tür şablonlar sınıflardır. Sınıf belirli bir nesne türünün sahip olabileceği alanları ve üzerinde hangi işlemlerin tanımlandığını açıklar.
sınıf ve nesne arasındaki fark, "araba" arasındaki farka benzer. ve "Cheburekovo Caddesi'ndeki 5. eve park etmiş Toyota Camry".

Java'daki alanlarla kendi nesne sınıfınızı yaratma prosedürünü göz önünde bulundurun. sınıf Kitap { dizi adı; Dize yazarıAdı; int yaş Gereksinimi; Dize metni; int sayfa sayısı; } Bu kod, sınıf"Kitap"ı oluşturur. «Kitap» sınıfının nesneleri iki tamsayı özelliği ( «ageRequirement» ve «pageCount» olarak adlandırılır) ve «String» türünde üç özellik vardır. ("name", "yazarAdı" ve "text" adlarıyla.
Alanları olan bir sınıf oluşturmak için genel sözdizimi aşağıdaki gibidir.
  sınıf <sınıf adı> { <ilk özellik türü> <ilk özellik adı> <ikinci özellik türü> <ikinci özellik adı> &helli; <son özelliğin türü> <son özellik adı> }

Tabii ki, Java'da sınıfları yalnızca bu şekilde değil (yöntemler, erişim değiştiriciler ve çok daha fazlası da vardır), daha sonra daha fazlasını oluşturabilirsiniz.

Sınıf yöntemleri
Java'daki nesneler üzerindeki işlemlere yöntemler denir. Yöntemler matematik işlevleri gibidir: argümanları alabilir ve bir değer döndürebilirler. Öte yandan, Java'daki yöntemlerin de bir nesnenin tüm alanlarına erişimi vardır.

Bir sınıfta bir yöntem oluşturmak için, onu sınıfa dahil etmelisiniz. Örneğin, kitabımızla ilgili bilgileri yazdıracak ve kullanıcı henüz o kitap için yeterli yaşta değilse bir uyarı görüntüleyecek bir print(age) yöntemi tanımlayabiliriz.

    sınıf Kitap
    {
        Dize adı;
        Dize yazarıAdı;
        int ageRequirement;
        Dize metni;
        int pageCount;
        // bir yazdırma yöntemi oluşturun
        geçersiz yazdır( style="color:#b00040">int yaş)
        {
            Sistem.çıkış.< span style="color:#7d9029">println("Name: " +ad);
            Sistem.çıkış.< span style="color:#7d9029">println("Yazar: " +yazarAdı);
            Sistem.çıkış.< span style="color:#7d9029">println("Sayfa sayısı: "+Tamsayı.toString(ageRequirement);
            // doğrulama kodu buraya gelir
        }
    }
 
Bir yöntem oluşturmak için sözdizimini inceleyelim.
1) Bir yöntemin ilk satırı imzasıdır.
2) Önce metodun dönüş tipi yazılır. Metodumuz herhangi bir değer döndürmediği için void yazıyoruz.
3) Ardından imzada yöntemin adı bulunur (print).
4) Parantez içinde argümanların bir listesi vardır. Argümanlar virgülle ayrılır. Her bağımsız değişken için türü ve adı bir boşlukla ayrılarak belirtilir. Bizim durumumuzda yalnızca bir bağımsız değişken vardır, bu argümanın türü int ve adı age olduğundan virgül yoktur.
5) Bundan sonra küme parantezleri içinde yöntem kodu gelir. Bir yöntemden değer döndürmek için return <value>; yazın. Örnekte, yöntem hiçbir şey döndürmez, dolayısıyla return ihmal edilebilir. Bir yöntemin yürütülmesini zamanından önce sonlandırmak için return; yazabilirsiniz.
6) Sınıfın kendisinde, bu sınıfın nesnesinin alanlarına isimle başvurabiliriz.

Erişim değiştiricileri
Varsayılan olarak, Java'daki bir sınıfın tüm alanları ve yöntemleri özel'dir. Bu, hiç kimsenin onlara erişemeyeceği anlamına gelir, yani bu sınıfın nesneleri dışında hiçbir yöntem, bu sınıfın nesnelerinin alanlarını ve yöntemlerini kullanamaz.

Alanlar ve yöntemler, erişim değiştiricisi public ile herkese açık hale getirilebilir. Alanı özel yapan bir private değiştiricisi de vardır. Tüm alanlar ve yöntemler varsayılan olarak özel olduğundan isteğe bağlıdır. İşte public  ve private değiştiricilerinin kullanımına bir örnek. sınıfKitabı { genel Dizgi adı; Dize yazarıAdı; özel int yaş Gereksinimi; Dize metni; genel int sayfa sayısı; int getTextLength() { dönüş metni uzunluğu(); } genel int getAverageLetterCount() { getTextLength() / pageCount'u döndürür; } özel int getDifficuiltyLevel() { dönüş 5 * yaşGereksinimi * metin.Length(); } }
Kitap sınıfının bu versiyonunda, name ve pageCount alanları diğer nesnelerde okuma ve değiştirme için herkese açık hale getirildi. getAverageLetterCount() yöntemi, diğer sınıfların nesnelerinden de çağrılabilir. Diğer tüm alanlar ve yöntemler özel kalır ve yalnızca bu sınıfın yöntemlerinde bulunur. getAverageLetterCount() genel yönteminde, getTextLength() özel yöntemini çağırabiliriz çünkü getAverageLetterCount() sınıfın kendisine aittir. Ancak başka bir sınıfın yönteminden çalışmaz.

Peki o zaman neden alanları özel yapalım? Java kodunda çoğunlukla yalnızca özel alanları göreceksiniz. Gerçek şu ki, özel alanlara erişim nesnenin genel yöntemleri aracılığıyla gerçekleştirilirse, özel alanlara bu tür bir erişimle ek eylemler ve kontroller yapmak mümkün olacaktır. Bununla ilgili daha fazla bilgi kapsülleme ile ilgili derste olacak.

Şimdiye kadarki dersler, nesne yaratmaya yönelik şablonlar olan sınıflar yaratmayı tartıştı. Aynı derste nesnelerin kendilerini oluşturma ve kullanma süreci anlatılacaktır.

Bağlantılar
Java dilinde, bir değişken asla bir nesneyi depolayamaz. Bunun yerine Java, bellekteki bir nesnenin konumuna işaret eden referanslara sahiptir.
Nesne referansı türünde bir değişken oluşturmak için sözdizimi aşağıdaki gibidir:
<Sınıf adı> <değişken adı>;
Nesnelerine başvurulacak sınıfı hemen belirttiğimizi belirtmekte fayda var.

Örnek: Book sınıfını işaret eden "b" adlı bir değişken:

Kitap b;

Aynı şekilde, sınıf alanları da oluşturabilirsiniz (buraya bir erişim değiştiricisi ekleyebilirsiniz). Başvuru dizileri oluşturabilir ve bunları yöntemlerden döndürebilirsiniz. Örnek:

genel sınıf Kütüphane {
  genel Kitap[] kitaplar;
  genel Kitap findBookWithName(String name) {
//doğru kitabı bulan kod
  }
};


Sonuç: birçok yönden referanslarla, diğer temel türlerdeki (int, uzun, çift...) değişkenlerle aynı şekilde çalışabilirsiniz.