Java Kapsülleme
kapsülleme
Kapsüllemenin anlamı, "hassas" verilerin kullanıcılardan gizlendiğinden emin olmaktır. Bunu başarmak için şunları yapmalısınız:
- sınıf değişkenlerini/özniteliklerini şu şekilde bildir
private
-
bir değişkenin değerine erişmek ve güncellemek için genel alma
ve ayarlama yöntemleri sağlayın
private
Al ve Ayarla
Önceki bölümden, private
değişkenlere yalnızca aynı sınıf içinde erişilebileceğini öğrendiniz (dış bir sınıfın buna erişimi yoktur). Ancak public get ve set yöntemlerini sağlarsak bunlara ulaşmak mümkündür .
Yöntem get
, değişken değerini döndürür ve set
yöntem değeri ayarlar.
Her ikisinin de sözdizimi, ya get
veya ile başlamaları set
, ardından değişkenin adının ilk harfi büyük olacak şekilde olmalarıdır:
Örnek
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
Örnek açıklama
Yöntem get
, değişkenin değerini döndürür name
.
Yöntem set
bir parametre ( newName
) alır ve onu
name
değişkene atar. Anahtar this
kelime, geçerli nesneye atıfta bulunmak için kullanılır.
Ancak name
değişken olarak bildirildiğinden private
,
bu sınıfın dışından ona erişemiyoruz :
Örnek
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
Değişken olarak bildirilmiş public
olsaydı, aşağıdaki çıktıyı beklerdik:
John
Ancak, bir değişkene erişmeye çalıştığımızda private
bir hata alıyoruz:
MyClass.java:4: error: name has private access in Person
myObj.name = "John";
^
MyClass.java:5: error: name has private access in Person
System.out.println(myObj.name);
^
2 errors
Bunun yerine, değişkene erişmek ve güncellemek için getName()
ve yöntemlerini kullanırız:setName()
Örnek
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.setName("John"); // Set the value of the name variable to "John"
System.out.println(myObj.getName());
}
}
// Outputs "John"
Neden Kapsülleme?
- Sınıf niteliklerinin ve yöntemlerinin daha iyi kontrolü
- Sınıf öznitelikleri salt okunur (yalnızca
get
yöntemi kullanıyorsanız) veya salt okunur (yalnızcaset
yöntemi kullanıyorsanız) yapılabilir. - Esnek: programcı kodun bir bölümünü diğer bölümleri etkilemeden değiştirebilir
- Artan veri güvenliği