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

Javaأمثلة شاملة حول أماكن وضع الكلمة final في جافا

في المثال التالي قمنا بتعريف 3 متغيرات نوعها final.
الهدف هنا معرفة الطرق المسموح فيها إعطاء قيمة للمتغير المعرف كـ final.

المثال الأول

Example.java
public class Example {
public final int a = 10; // و أعطيناه قيمة مباشرةً عند تعريفه final هنا قمنا بتعريف متغير نوعه
public final int b; // بدون تحديد قيمته final هنا قمنا بتعريف متغير نوعه
public final int c; // بدون تحديد قيمته final هنا قمنا بتعريف متغير نوعه
public Example(int b) {
this.b = b; // من الكائن, أي أن الكائن هو من سيقوم بتحديدها b هنا سيتم تحديد قيمة المتغير
c = 50; // مباشرةً عند إنشاء كائن, أي أن الكائن سيملكها هكذا c هنا سيتم تحديد قيمة المتغير
}
}
public class Example { public final int a = 10; // و أعطيناه قيمة مباشرةً عند تعريفه final هنا قمنا بتعريف متغير نوعه public final int b; // بدون تحديد قيمته final هنا قمنا بتعريف متغير نوعه public final int c; // بدون تحديد قيمته final هنا قمنا بتعريف متغير نوعه public Example(int b) { this.b = b; // من الكائن, أي أن الكائن هو من سيقوم بتحديدها b هنا سيتم تحديد قيمة المتغير c = 50; // مباشرةً عند إنشاء كائن, أي أن الكائن سيملكها هكذا c هنا سيتم تحديد قيمة المتغير } }


في المثال التالي سنقوم بإنشاء 2 كلاس, الكلاس A و الكلاس B الذي سيرث منه.
في الكلاس A سنقوم بتعريف دالة عادية و دالة نوعها final.
في الكلاس B سنفعل override للدالة التي ليس نوعها final.
بعدها سنقوم بإنشاء الكلاس Main لتجربة الكود.
الهدف هنا معرفة أن الدوال المعرفة كـ final لا يمكن تعريفها من جديد في الكلاس الذي يرثها. إذاً الكلمة final تمنع الـ override.

المثال الثاني

A.java
public class A {
// final لهذه الدالة لأنها معرفة كـ Override أي كلاس سيرث من هذا الكلاس, لا يمكنه أن يفعل
public final void firstPrint() {
System.out.println("welcome to java");
}
// final لهذه الدالة لأنها غير معرفة كـ Override أي كلاس سيرث من هذا الكلاس, يمكنه أن يفعل
public void secondPrint() {
System.out.println("welcome to java");
}
}
public class A { // final لهذه الدالة لأنها معرفة كـ Override أي كلاس سيرث من هذا الكلاس, لا يمكنه أن يفعل public final void firstPrint() { System.out.println("welcome to java"); } // final لهذه الدالة لأنها غير معرفة كـ Override أي كلاس سيرث من هذا الكلاس, يمكنه أن يفعل public void secondPrint() { System.out.println("welcome to java"); } }

B.java
// و كأنها موجودة فيه تماماً A إستخدام الأشياء الموجودة في B أي يمكن للكلاس .A يرث من الكلاس B هنا قلنا أن الكلاس
public class B extends A {
// B بالنسبة للكلاس secondPrint هنا قمنا بإعادة كتابة محتوى الدالة
@Override
public void secondPrint() {
System.out.println("class B override my content!");
}
}
// و كأنها موجودة فيه تماماً A إستخدام الأشياء الموجودة في B أي يمكن للكلاس .A يرث من الكلاس B هنا قلنا أن الكلاس public class B extends A { // B بالنسبة للكلاس secondPrint هنا قمنا بإعادة كتابة محتوى الدالة @Override public void secondPrint() { System.out.println("class B override my content!"); } }

Main.java
public class Main {
public static void main(String[] args) {
A a = new A(); // a إسمه A هنا قمنا بإنشاء كائن من الكلاس
B b = new B(); // b إسمه B هنا قمنا بإنشاء كائن من الكلاس
a.firstPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس
a.secondPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس
b.firstPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس
b.secondPrint(); // B هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس
}
}
public class Main { public static void main(String[] args) { A a = new A(); // a إسمه A هنا قمنا بإنشاء كائن من الكلاس B b = new B(); // b إسمه B هنا قمنا بإنشاء كائن من الكلاس a.firstPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس a.secondPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس b.firstPrint(); // A هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس b.secondPrint(); // B هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس } }

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

welcome to java
welcome to java
welcome to java
class B override my content!
welcome to java welcome to java welcome to java class B override my content!


في المثال التالي سنقوم بإنشاء كلاس نوعه final من أجل جعل الكود غير قابل لأي تعديل خارجي.
بعدها سنقوم بإنشاء الكلاس Main لتجربة الكود.
الهدف هنا معرفة أن الكلاس المعرف كـ final يمكن إنشاء كائنات منه, لكن لا يمكن الوراثة منه.

المثال الثالث

FatherOfJava.java
// لمنع الوراثة منه فقط final هنا قمنا بتعريف الكلاس كـ
public final class FatherOfJava {
public String name = "James Arthur Gosling";
public String born = "May 19, 1955";
public void story() {
System.out.println(name+ ", born on " +born+ ". He is a Canadian computer scientist,"
+ " best known as the father of the Java programming language");
}
}
// لمنع الوراثة منه فقط final هنا قمنا بتعريف الكلاس كـ public final class FatherOfJava { public String name = "James Arthur Gosling"; public String born = "May 19, 1955"; public void story() { System.out.println(name+ ", born on " +born+ ". He is a Canadian computer scientist," + " best known as the father of the Java programming language"); } }

Main.java
public class Main {
public static void main(String[] args) {
// obj إسمه FatherOfJava هنا قمنا بإنشاء كائن من الكلاس
FatherOfJava obj = new FatherOfJava();
// كما تم تعريفها في الكلاس الأساسي name هنا سيتم عرض قيمة المتغير
System.out.println("Name of the father of java: " +obj.name);
// FatherOfJava هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس
obj.story();
}
}
public class Main { public static void main(String[] args) { // obj إسمه FatherOfJava هنا قمنا بإنشاء كائن من الكلاس FatherOfJava obj = new FatherOfJava(); // كما تم تعريفها في الكلاس الأساسي name هنا سيتم عرض قيمة المتغير System.out.println("Name of the father of java: " +obj.name); // FatherOfJava هنا سيتم تنفيذ الدالة كما تم تعريفها في الكلاس obj.story(); } }

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

Name of the father of java: James Arthur Gosling
James Arthur Gosling, born on May 19, 1955. He is a Canadian computer scientist, best known as the father of the Java programming language
Name of the father of java: James Arthur Gosling James Arthur Gosling, born on May 19, 1955. He is a Canadian computer scientist, best known as the father of the Java programming language