Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaمثال عملي يوضح فائدة الكلمة static في جافا

لنفترض أننا نريد إنشاء كلاس إسمه book لتخزين الكتب مع مراعاة الشروط التالية:
كل كتاب يجب ذكر إسمه bookName, إسم المؤلف author, و عدد الصفحات pageNumbers بالإضافة أنه يجب حفظ عدد الكتب الكلي.
لحفظ عدد الكتب يمكننا إنشاء متغير نوعه private و static يزيد واحداً كلما قمنا بإنشاء كائن جديد ( أي كتاب جديد, لأن كل كتاب عبارة عن كائن من الكلاس book ).

بعد إنشاء هذا الكلاس, سنقوم بإنشاء الكلاس MainBook لتجربته.

Book.java
public class Book {
// هنا قمنا بتعريف الخصائص التي يجب أن تتوفر في كل كتاب
public String bookName; // سنستخدم هذا المتغير لحفظ إسم الكتاب
public String bookAuthor; // سنستخدم هذا المتغير لحفظ إسم المؤلف
public int pageNumbers; // سنستخدم هذا المتغير لحفظ عدد صفحات الكتاب
private static int bookCounter; // private سنستخدم هذا المتغير لحفظ عدد الكتب, لا يمكن لأحد من خارج هذا الكلاس تغيير عدد الكتب لأنه
// عند إنشاء كائنات من هذا الكلاس سنستخدم هذا الكونستركتور لإدخال معلومات الكتب مباشرةً عند تعريفهم
public Book(String bookName, String bookAuthor, int pageNumbers) {
this.bookName = bookName;
this.bookAuthor = bookAuthor;
this.pageNumbers = pageNumbers;
bookCounter++; // سيكون موحد لجميع الكائنات. هنا كلما قمنا بإنشاء كائن جديد سيزيد واحداً و هكذا سنحصل على عدد جميع الكتب التي أنشأت static بما أن نوعه
}
// هذه الدالة تطبع محتوى الكائن (أي الكتاب) الذي قام باستدعائها
public void printBookInfo() {
System.out.println("Book: " +bookName);
System.out.println("Author: " +bookAuthor);
System.out.println("Number of pages: " +pageNumbers);
System.out.println("------------------------------");
}
// static هذه الدالة تطبع عدد الكائنات (أي الكتب) و يمكن استدعائها مباشرةً من الكلاس لأن نوعها
public static void printTotalNumberOfBooks() {
System.out.println("The total number of books is: " +bookCounter);
}
}
public class Book { // هنا قمنا بتعريف الخصائص التي يجب أن تتوفر في كل كتاب public String bookName; // سنستخدم هذا المتغير لحفظ إسم الكتاب public String bookAuthor; // سنستخدم هذا المتغير لحفظ إسم المؤلف public int pageNumbers; // سنستخدم هذا المتغير لحفظ عدد صفحات الكتاب private static int bookCounter; // private سنستخدم هذا المتغير لحفظ عدد الكتب, لا يمكن لأحد من خارج هذا الكلاس تغيير عدد الكتب لأنه // عند إنشاء كائنات من هذا الكلاس سنستخدم هذا الكونستركتور لإدخال معلومات الكتب مباشرةً عند تعريفهم public Book(String bookName, String bookAuthor, int pageNumbers) { this.bookName = bookName; this.bookAuthor = bookAuthor; this.pageNumbers = pageNumbers; bookCounter++; // سيكون موحد لجميع الكائنات. هنا كلما قمنا بإنشاء كائن جديد سيزيد واحداً و هكذا سنحصل على عدد جميع الكتب التي أنشأت static بما أن نوعه } // هذه الدالة تطبع محتوى الكائن (أي الكتاب) الذي قام باستدعائها public void printBookInfo() { System.out.println("Book: " +bookName); System.out.println("Author: " +bookAuthor); System.out.println("Number of pages: " +pageNumbers); System.out.println("------------------------------"); } // static هذه الدالة تطبع عدد الكائنات (أي الكتب) و يمكن استدعائها مباشرةً من الكلاس لأن نوعها public static void printTotalNumberOfBooks() { System.out.println("The total number of books is: " +bookCounter); } }

Main.java
public class Main {
public static void main(String[] args) {
// هنا قمنا بإنشاء ثلاث كتب
Book b1 = new Book("java", "Mhamad Harmush", 500);
Book b2 = new Book("HTML", "Hala Harmush" , 320);
Book b3 = new Book("C++" , "Omar El Koussa", 210);
// هنا قمنا بعرض خصائص كل كتاب
b1.printBookInfo();
b2.printBookInfo();
b3.printBookInfo();
// هنا قمنا بعرض عدد جميع الكتب
Book.printTotalNumberOfBooks();
}
}
public class Main { public static void main(String[] args) { // هنا قمنا بإنشاء ثلاث كتب Book b1 = new Book("java", "Mhamad Harmush", 500); Book b2 = new Book("HTML", "Hala Harmush" , 320); Book b3 = new Book("C++" , "Omar El Koussa", 210); // هنا قمنا بعرض خصائص كل كتاب b1.printBookInfo(); b2.printBookInfo(); b3.printBookInfo(); // هنا قمنا بعرض عدد جميع الكتب Book.printTotalNumberOfBooks(); } }

سنحصل على النتيجة التالية عند التشغيل.

Book: java
Author: Mhamad Harmush
Number of pages: 500
------------------------------
Book: HTML
Author: Hala Harmush
Number of pages: 320
------------------------------
Book: C++
Author: Omar El Koussa
Number of pages: 210
------------------------------
The total number of books is: 3
Book: java Author: Mhamad Harmush Number of pages: 500 ------------------------------ Book: HTML Author: Hala Harmush Number of pages: 320 ------------------------------ Book: C++ Author: Omar El Koussa Number of pages: 210 ------------------------------ The total number of books is: 3