Javaأمثلة حول فكرة Anonymous Class و Anonymous Object في جافا
في الدروس السابقة كنا نفعل extends
للكلاس المعرف كـ abstract
حتى نقوم باستخدامه.
أسلوب الـ Anonymous Class يتيح لك إستخدام أي كلاس معرف كـ abstract
بدون أن تفعل له extends
.
في المثال التالي قمنا بتعريف كلاس نوعه abstract
إسمه A
, يحتوي على دالة نوعها abstract
, إسمها print()
.
في الكلاس Main
قمنا بتعريف Anonymous Class من الكلاس A
و فعلنا فيه Override للدالة print()
.
و قمنا بتخزين كائن الـ Anonymous Class في كائن إسمه obj
.
المثال الأول
public abstract class A { // A إسمه Abstract هنا قمنا بتعريف كلاس نوعه public abstract void print(); // print() إسمها abstract هنا قمنا بتعريف دالة نوعها }
public class Main { public static void main(String[] args) { // obj ثم قمنا بتخزنيه في الكائن A من Anonymous Inner Class هنا قمنا بخلق A obj = new A() { // print() للدالة Override هنا فعلنا public void print() { System.out.println("obj is an Anonymous Inner Object"); } }; // obj من الكائن print() هنا قمنا باستدعاء الدالة obj.print(); } }
سنحصل على النتيجة التالية عند التشغيل.
obj is an Anonymous Inner Object
في المثال التالي أعدنا نفس المثال السابق لكننا لم نقم بتخزين الكائن الذي سيرجعه كونستركتور الكلاس A
في كائن من نفس النوع.
الفكرة هنا أنه يمكنك إنشاء الـ Anonymous Class و تنفيذ الدالة الموجودة فيه مباشرةً عندما يتم خلق الكائن دون الحاجة إلى تخزينه.
هذا الأسلوب مفيد في حال كنت تريد إنشاء كائن من كلاس معين و إستخدام دالة موجودة فيه مرة واحدة فقط.
المثال الثاني
public abstract class A { // A إسمه Abstract هنا قمنا بتعريف كلاس نوعه public abstract void print(); // print() إسمها abstract هنا قمنا بتعريف دالة نوعها }
public class Main { public static void main(String[] args) { // print() أيضاً للدالة Override و لم نقم بتخزينه في كائن. و فعلنا A هنا قمنا بخلق كائن من الكلاس new A() { public void print() { System.out.println("obj is an Anonymous Inner Object"); } }.print(); // مباشرةً بعد أن تم إنشاء الكائن print() هنا قمنا باستدعاء الدالة } }
سنحصل على النتيجة التالية عند التشغيل.
obj is an Anonymous Inner Object