Kirishni boshqarmaydigan modifikatorlar
Klasslar uchun, siz "final" yoki "abstract" modifikatorlaridan foydalanishingiz mumkin.
Kirishni boshqarmaydigan modifikatorlar ta'riflari:
- `final`: Klass boshqa klasslar tomonidan meros qilinmaydi. Meras va subclasslar haqida "Inheritance" bo'limida ko'proq bilim olishasiz.
- `abstract`: Klass obyekt yaratish uchun ishlatilmaydi (ob'ekt yaratish uchun uning boshqa klassdan meros qilinishi kerak). Inheritance va abstraction (meras va sozlash) haqida "Inheritance" va "Abstraction" bo'limlarida ko'proq bilim olishasiz.
Obyekt va metodlar uchun, quyidagi modifikatorlardan birini ishlatishingiz mumkin:
Modifikatorlar ta'riflari:
- `final`: Atributlar va metodlar o'zgartirib bo'lmaydi yoki ularni o'zgartira olmaydi.
- `static`: Atributlar va metodlar obyektlarga tegishli emas, ular klassga tegishli.
- `abstract`: Fqatgina abstract klassida foydalaniladi va faqat metodlarda ishlatiladi. U metodni tanlangan klass orqali o'zgartira olmaslik uchun metodning o'zi yo'q. O'zlash va abstraksiya (abstract) haqida "Inheritance" va "Abstraction" bo'limlarida ko'proq bilim olishasiz.- `transient`: Atributlar va metodlar obyektni serializatsiya qilishda o'tkazilmaydi.
- `synchronized`: Metodlar faqatgina bir thread tomonidan qo'llab-quvvatlanadi.
- `volatile`: Atributning qiymati threadlar tomonidan o'zgaradi va uni doim "asosiy xotira" dan o'qishadi.
`final`
Agar mavjud atribut qiymatlarini qayta o'zgartira olish imkoniyatini istamasangiz, atributlarni "final" deb e'lon qilishingiz mumkin.
final modifikatori
final modifikatori o'zgaruvchilarni o'zgartira olmaslik (qayta o'zgartira olmaslik) sharti bilan murojaat qiladi. Quyidagi kod x va PI o'zgaruvchilarini final sifatida e'lon qiladi:
public class Main {
final int x = 10;
final double PI = 3.14;
public static void main(String[] args) {
Main myObj = new Main();
myObj.x = 50; // x o'zgaruvchisiga qiymatni tayinlashda xatolik yuzaga kelaydi: final o'zgaruvchi uchun qiymatni o'zgartira olmaydi
myObj.PI = 25; // PI o'zgaruvchisiga qiymatni tayinlashda xatolik yuzaga kelaydi: final o'zgaruvchi uchun qiymatni o'zgartira olmaydi
System.out.println(myObj.x);
}
}
Natijada, x va PI o'zgaruvchilari final sifatida e'lon qilinib, ularga qiymat o'zgartira olmaydi. Bu sababli, myObj.x = 50 va myObj.PI = 25 qatorlarida xatolik yuzaga keladi.
`static`
`static` modifikatori, klassning obyektini yaratmasdan ham murojaat qilinishini anglatadi, bu esa klassda turingizni boshqarish uchun o'z nomi orqali boshqa obyektlarni yaratishsiz bo'ladi. Bu `public` modifikatoriga o'xshash emas.
static va public metodlari orasidagi farqni ko'rsatuvchi misol:
|