Kirishga oid bo‘lmagan modifikatorlar


ULASHISH

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);
  }
}

O‘zingiz sinab ko‘ring »


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
  }
}

O‘zingiz sinab ko‘ring »

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
  }
}

O‘zingiz sinab ko‘ring »


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!