OCAJP 7/8 #3 – packages, import

  • Paket adları dəyişən adlarındakı kimi qaydalara əsasən adlandırıla bilər.
  • Import zamanı əgər * işlənibsə, məsələn – import java.util.* – bu zaman util paketindəki (qovluğundakı) bütün class-lar import edilmiş olacaq, ancaq class instance fields, metodları və util-in tərkibindəki paketlərdəki class-lar import edilməyəcək.
  • İlkin (default) paketdən fərqli paket daxilində yerləşən java faylın kompilyasiyası zamanı paketin adı da class faylının içərisində yazılır. Bu səbəbdən classı çağırmaq üçün paket_adı/class_adı işlənir.
  • Paket daxilindəki bütün classları .* kimi import etmək əslində proqramın işinə heç bir problem yaratmır və gecikdirmir. İstənilən class-ı ayrılıqda çağırmaq sadəcə olaraq daha məsləhətdir ki, kodu oxuyan digər şəxslər bu class daxilində istifadə edilmiş import-ları aydın görsün.
  • lang.* paketindəki class-ları ayrıca və ya paketi import etməyə ehtiyac yoxdur, bunu JAVA özü avtomatik edir. Ancaq java.lang.* daxilində olan paketlər isə avtomatik import edilmir.
  • Əgər eyni class adı birdən çox paketdə işlədilibsə, o zaman (Date classı həm java.sql.* həm də java.util.* paketində yerləşir) :
    1. Əgər sizə yalnız java.util paketindəki Date classı, java.sql.* paketindən isə digər class-lardan istifadə etmək lazımdırsa:
      1. import java.util.Date; import java.sql.*;(ardıcıllıq əksinə də ola bilər) kimi import etsək, yalnız util paketindən Date class-ı import ediləcək , sql paketindən isə Date -dan başqa digər class-lar import ediləcək.

Əgər sizə hər iki paketdəki eyni adlı class lazımdırsa, aşağıdakı 2 variantda işləmək olar:

i.	import java.util.Date;

public class OcaTest1
{
public static void main(String[] args)
    {
	      Date date;
        java.sql.Date sqlDate;
    }   
}
ii.	public class OcaTest1
{
public static void main(String[] args)
    {
        java.util.Date date;
        java.sql.Date sqlDate;
    }
}

a.       Əgər hər iki paketi import etsək , hər iki paketdə yerləşən Date class-ını birbaşa işlətmək olmayacaq, kompilyasiya səhvi verəcək:

i.	import java.util.*;
import java.sql.*;

public class OcaTest1
{
public static void main(String[] arguments)
    {
        Date ocaTest2=new Date();// java.util.Date yoxsa java.sql.Date??
    }
}

7) import zamanı iki * dan istifadə etmək olmaz. Ulduz yalnız sonuncu nöqtədən sonra gələ bilər və 1 dəfə işlənə bilər. Aşağıdakı import sətiri səhvdir.

a.	import java.*.*;

8) Əgər class default paketdən fərqli paketdə yerləşərsə class faylında yerləşdiyi paketin adı göstərilməlidir.

9) İmtahanda diqqət ediləsi digər məqam. Əgər kodların qarşısında sətir nömrələnməsi varsa və eyni anda 1-ci sətirdən başlayırsa kod, diqqət edin, import və ya digər sətirlər deməli yazılmayıb və bu lazım idisə, kod kompilyasiya olmayacaq.

10) Əgər A classı default paketdə yerləşirsə ( no named package ) bu classı named package-lərdə yerləşən class-larda import etmək mümkün deyil.

11) Static import digər package daxilində yerləşən class-ın static dəyişən və metodlarını import etməyə imkan verir. Bu zaman class-ın static dəyişən və metodlarını istifadə etmək üçün öncə class adı yazmağa ehtiyac qalmır ( Class.staticMethod() əvəzinə staticMethod() yazmaq olar )

a.	package b;

public class SecondClass {
    static public int staticInt;

    public static void staticMethod() {
        //...
    }
}
package a;

import static b.SecondClass.staticInt;
import static b.SecondClass.staticMethod;

public class MainClass {
    public static void main(String[] args) {
        System.out.println(staticInt);
        staticMethod();
    }
}
b.	import static b.SecondClass.*; // Static üzvlərin EXTEND edilmədən birbaşa yazılması üçün mütləqdir

public class MainClass
{
    public static void main(String[] args)
    {
       sg();  // SecondClass.sg();
    }
}

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.