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.