Kirishga oid bo‘lmagan modifikatorlar
Kirishga oid bo‘lmagan modifikatorlar
Kirishga oid bo‘lmagan modifikatorlar ko‘rinuvchanlikni (public yoki private kabi) boshqarmaydi, aksincha sinflar, metodlar va atributlarga boshqa xususiyatlar qo‘shadi.
Eng ko‘p ishlatiladigan kirishga oid bo‘lmagan modifikatorlar — final, static va abstract.
Final
Agar mavjud atribut qiymatlarini qayta yozish imkoniyati bo‘lishini istamasangiz, atributlarni final deb e’lon qiling:
Misol
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; // will generate an error: cannot assign a value to a final variable
myObj.PI = 25; // will generate an error: cannot assign a value to a final variable
System.out.println(myObj.x);
}
}
Static
static metod biror aniq obyektga emas, sinfga tegishli bo‘ladi. Bu uni sinf obyektini yaratmasdan chaqirish mumkinligini anglatadi.
Misol
static metodni to‘g‘ridan-to‘g‘ri qanday chaqirishni ko‘rsatuvchi oddiy misol:
public class Main {
// Static method
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// Main method
public static void main(String[] args) {
myStaticMethod(); // Call the static method
Main.myStaticMethod(); // Or call it using the class name
}
}
Eslatma: static metod sinfning o‘ziga tegishli. Uni obyekt yaratmasdan chaqirish mumkin, ammo u obyektga tegishli o‘zgaruvchi yoki metodlardan foydalana olmaydi.
Abstract
abstract metod abstract sinfga tegishli bo‘ladi va uning tanasi bo‘lmaydi. Tanani voris sinf (subclass) taqdim etadi:
// abstract class
abstract class Main {
public String fname = "John";
public int age = 24;
public abstract void study(); // abstract method
}
// Subclass (inherit from Main)
class Student extends Main {
public int graduationYear = 2018;
public void study() { // the body of the abstract method is provided here
System.out.println("Studying all day long");
}
}
// Code from filename: Second.java
class Second {
public static void main(String[] args) {
// create an object of the Student class (which inherits attributes and methods from Main)
Student myObj = new Student();
System.out.println("Name: " + myObj.fname);
System.out.println("Age: " + myObj.age);
System.out.println("Graduation Year: " + myObj.graduationYear);
myObj.study(); // call abstract method
}
}
Kirishga oid bo‘lmagan modifikatorlar ro‘yxati
Sinflar uchun final yoki abstract’dan foydalanishingiz mumkin:
| Modifikator | Tavsif | Sinab ko‘ring |
|---|---|---|
final |
Sinfdan boshqa sinflar meros ola olmaydi (Vorislik haqida Vorislik bobida batafsil bilib olasiz) | Sinab ko‘ring » |
abstract |
Sinfdan obyekt yaratish uchun foydalanib bo‘lmaydi (Abstrakt sinfga murojaat qilish uchun undan boshqa sinf meros olishi kerak. Vorislik va abstraksiya haqida Vorislik va Abstraksiya boblarida batafsil bilib olasiz) | Sinab ko‘ring » |
Atributlar va metodlar uchun quyidagilardan birini ishlatishingiz mumkin:
| Modifikator | Tavsif |
|---|---|
final |
Atributlar va metodlarni qayta aniqlash/o‘zgartirish mumkin emas |
static |
Atributlar va metodlar obyektlarga emas, sinfga tegishli bo‘ladi. Bu barcha obyektlar bitta umumiy static atributdan foydalanishini, static metodlarni esa obyekt yaratmasdan chaqirish mumkinligini anglatadi. |
abstract |
Faqat abstrakt sinfda va faqat metodlarga nisbatan ishlatilishi mumkin. Metodning tanasi bo‘lmaydi, masalan, abstract void run();. Tanani voris sinf (meros olgan sinf) taqdim etadi. Vorislik va abstraksiya haqida Vorislik va Abstraksiya boblarida batafsil bilib olasiz |
transient |
Ularni o‘z ichiga olgan obyekt serializatsiya qilinganda atributlar va metodlar tashlab ketiladi |
synchronized |
Metodlarga bir vaqtning o‘zida faqat bitta oqim (thread) murojaat qila oladi |
volatile |
Atribut qiymati oqim (thread) darajasida lokal keshlanmaydi va har doim "asosiy xotira"dan o‘qiladi |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
