Misol:
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
Xatolik sodir bo’ladi
Buning o'rniga, o'zgaruvchiga kirish va yangilash uchun getName() va setName() usullaridan foydalanamiz: Buning o'rniga, o'zgaruvchiga kirish va yangilash uchun getName() va setName() usullaridan foydalanamiz:
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"
Demak, nima uchun inkapsulyatsiya degan savolga javob berib o’tamiz:
- Sinf atributlari va usullarini yaxshiroq nazorat qilish.
- Sinf atributlari faqat o'qish uchun (agar siz faqat get usulidan foydalansangiz) yoki faqat yozish uchun (faqat belgilangan usuldan foydalansangiz) bo'lishi mumkin.
- Moslashuvchan: dasturchi boshqa qismlarga ta'sir qilmasdan kodning bir qismini o'zgartirishi mumkin.
- Ma'lumotlar xavfsizligini oshirish.
Merosxo‘rlik (extends) extends kalit so'zi sinfni kengaytiradi (klass boshqa sinfdan meros bo'lib qolganligini bildiradi). Dasturlashda atribut va usullarni bir sinfdan ikkinchisiga meros qilib olish mumkin. Biz "meros tushunchasini" ikki toifaga birlashtiramiz: - subclass (child) - boshqa sinfdan meros bo'lib qolgan sinf;
- superclass (parent) - meros qilib olingan sinf
Sinfdan meros olish uchun kengaytirilgan (extends) kalit so'zdan foydalaniladi.
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
System.out.println("Tuut, tuut!");
}
}
Do'stlaringiz bilan baham: |