Bir sınıf tasarlanırken, sınıfın objelerine ait değişkenler (member field) private olarak tanımlanır. Böylece bu değişkenleri sadece sınıfın kendisi kullanır. Nasıl ayarlanacağını, nasıl okunacağını, kimlerin ayarlama ve görme yetkisi olacağını sınıf kendisi karar verir.
Eğer private değil de public olarak tanımlanırsa, bu sefer sınıf olmasının bir anlamı kalmaz. Önüne gelen değişkenleri istediği gibi değiştirebilir.
Şimdi private olarak tanımlanan bu değişkenleri, sınıfın gözetimi altında değiştirebilmek için (daha doğrusu sınıftan değişkenin değiştirilmesini istemek için) get ve set metodları tanımlanır. Değiştirmek istediğimiz değişkenler private olduğu için direkt değiştiremiyoruz. Bunun yerine public olarak tanımladığımız get ve set metodlarını çağırıp onlara değiştirtiyoruz.
Örneğin bir köpek sınıfın var ve "yaş" diye bir değişken var. Senin tasarımına göre de köpekler en az 1, en fazla da 15 yaşında olabilmeli diyelim. Eğer "yaş" değişkenini public olarak tanımlarsan, senin sınıfını kullanan başka bir programcı köpeğin yaşını kafasına göre "köpek.yaş = 30" deyip, 30 olarak ayarlayabilir.
Bu durumun önüne geçmek için "yaş" değişkeni private olarak tanımlanır. Böylece haylaz programcı "köpek.yaş = 30" işlemi uygulamaya çalıştığında compiler "yaş is not accessible" gibi bir hata verir. E buraya kadar tamam, değişkenimizi programcıdan koruduk. Peki gerçek bir değer girmek isterse nasıl yapacağız?
İşte burada da get ve set metodları devreye giriyor. Sen öyle bir setYaş() metodu tanımlayacaksın ki, yaş 1 ile 15 arasında değilse hata verecek ve değişime izin vermeyecek. Eğer doğru yaş girilmişse, işlem yürütülecek.
get ve set metodun köpek sınıfının içinde olacağı için, köpek sınıfına ait her türlü private değişkene erişim izni var. Aynı zamanda get ve set metodları da public olduğu için dışarıdan kullanıma açık. Böylece get ve set metodların sınıf ile kullanıcı arasında köprü görevi görmüş oluyor.
Yorumuz icin cok tesekkur ederim hocam Simdi anladim.ben deitel kitabindan calisiyorum ve derstede gormedik kitap mantikli bir sekilde sirayla gidiyor ve acikliyo bu komutlari ama anlayamiyordum Simdi daha net oldu hersey
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.