هذه المقالة يدرس بشكل أساسي فصول متعددة الإرسال في برمجة Java. إذن ما هي فئة متعددة الإرسال وما هو استخدامه؟ هنا مقدمة مفصلة.
بعد قراءة المقابلة مع Luo Luo Shengyang ، لم أستطع إلا أن أعجب به. كان صغيرا جدا. اعتقدت أنني كنت في نفس عصر Luo Yonghao ، وقد قابلت أحد اللاعبين الكبار الذين لم يكونوا برمجة مبتدئة وذات كبار المدارس الثانوية. بعد المقابلة ، وجدت أن لوو لوو كان أيضًا شخصًا اتخذ خطوة واحدة في وقت واحد. لا تقل أنه من الصعب القيام بذلك أو لا يمكنك القيام بذلك. لم تجربها أو تستمر.
إذا لم تتمكن من الطيران ثم الجري ، إذا لم تتمكن من الجري ثم المشي ، إذا لم تتمكن من المشي ثم الزحف ، ولكن
مهما فعلت ، عليك أن تستمر في التحرك إلى الأمام-مارتين لوثر كينج.
كان من الصعب فهم عنوان إعادة استخدام الطبقة في البداية. في وقت لاحق ذهبت لقراءة النسخة الإنجليزية الأصلية من الكتاب. في الواقع ، كان العنوان هو إعادة استخدام الفصول الدراسية ، ويعني إعادة استخدام الفصول الدراسية "استخدام أشياء جاهزة". في الواقع ، غالبًا ما يتم سماع طريقتان للتنفيذ في مجموعة Java - الجمع والميراث.
(1) مزيج
دور HAS-A.
تلفزيون الفئة العامة {show Show ؛ السلسلة العامة tostring () {return "showgirl" ؛ }} show show {} دعونا نذكر طريقة tostring. عندما تحتاج إلى سلسلة وأنت كائن ، سيقوم برنامج التحويل البرمجي بالاتصال بأسلوب tostring للكائن.
هناك عرض في التلفزيون. لا يتم تهيئة العرض الحالي وهو لاغ. لا يمكن استدعاء طريقة العرض.
المزيج له تأثير قوي. من منظور موجه نحو الكائن ، إذا كنت تقوم بإنشاء فئة سيارة ، فيمكنك الجمع بسهولة بين الزجاج والضوء والمحرك ومكونات السيارة الأخرى باستخدام المجموعة.
(2) الميراث
IS-A
package com.myown.aiiti ؛ الأب العام الأب {public int i ؛ void get () {system.out.println ("الأب") ؛}} حزمة الابن ؛ استيراد com.myown.aiiti. get () {super.get () ؛ system.out.println ("son") ؛}}هناك مشكلة في أذونات الوصول إلى الحزمة هنا. إذا لم تتم إضافة الجمهور ، فإن الافتراضي هو الوصول إلى العضو داخل الحزمة. تصل الحزمة المختلفة ، أي طريقة الوصول لعضو الأب في SON غير مرئية. والكلمات العامة مرئية ، لذلك يتم الحصول على الوصول.
لا يمكن مورث الجزء الخاص وينتمي إلى فئة الوالدين الخاصة ، في حين سيتم مورث الجزء العام ويمكن إعادة كتابة الأساليب التي تحتاج إلى تعديل. يمكن إضافة السمات المراد إضافتها بشكل منفصل.
علاوة على ذلك ، إذا تم إعادة كتابة الطريقة العامة الأصلية للوالدين ، إذا لم تضيف الطريقة العامة للأب الأصلي ، فلن تقلل من رؤية الطريقة الموروثة من الأب ، مما يعني أنه لا يمكن تقليل رؤية الطريقة الموروثة في فئة الأصل. يشير سوبر إلى فئة الوالدين ، أي الأب.
نقطة أخرى هي أنه في الواقع ، ترث جميع الفئات في جافا ضمنيًا فئة الكائن. الكائن هو الفئة الأم ، والفئات الأخرى هي فئات فرعية. يحب الأجانب التحدث عن ذلك باعتباره الطبقة الأساسية. وتسمى الفئات الفرعية أيضًا فئات مصدرة أو فئات مشتقة.
(3) وكيل
هناك طريقة صعبة نسبيًا لفهمها في نموذج التصميم - نموذج الوكيل. يتحدث المؤلف عن ذلك بشكل مثير للاهتمام. العامل هو عقيدة متوسط الجمع والميراث.
حزمة الابن فئة الأب {public void get () {system.out.println ("الأب") ؛ }} يمتد ابن الفئة العامة الأب {public static void main (string [] args) {الأب f = new boad () ؛ F.get () ؛ }} class budproxy {private fe -f = new boad () ؛ public void get () {f.get () ؛ }}إذا تعاملت مباشرة مع الأب كعضو ، فسيتعرض طريقة الأب لهذا الفصل. ثم يمكننا استخدام فئة وكيل مثل Pudproxy. أحدد كيفية الحصول على طريقة الحصول على نفسي. أعلم أنه يدعو إلى طريقة GET للأب ، لكن الشخص الذي يستخدم الوكيل الخاص بي لا يعرف. أخبره أنه إذا كنت تريد استخدامه ، فما عليك سوى استخدام طريقة GET Proxy. ينعكس التغليف. ما سبق هو مجرد مثال بسيط على الطرق العشوائي.
(4) إعادة كتابة وإعادة التحميل
فئة الأب {public void get (سلسلة s) {system.out.println ("الأب") ؛ } public void get (boolean b) {system.out.println ("boolean") ؛ }} SON الفئة العامة يمتد الأب {Override public void get (سلسلة s) {system.out.println ("الأب") ؛ } // Override // ستكون هناك رسالة خطأ لأن الفئة الأصل لا تحتوي على هذه الطريقة ، فهي ليست إعادة كتابة الفراغ العام GET (int i) {system.out.println ("sonint") ؛ } public static void main (string [] args) {son s = new son () ؛ S.Get ("D") ؛ S.Get (خطأ) ؛ S.Get (1) ؛ }}إعادة الكتابة هي إعادة كتابة طريقة الفئة الأصل. إذا لم يكن هناك إعادة كتابة أو تحميل زائد ، فعندما تستدعي الفئة الفرعية طريقة لا تملكها الفئة الفرعية ، فهي تتصل فعليًا بالفئة الأصل.
التحميل الزائد هو نفس اسم الطريقة ، ولكن اسم المعلمة مختلف. لمنعك من التحميل الزائد بشكل غير صحيح ، يمكنك إضافة علامة Override ، والتي ستطالبك بأنك لم تعيد كتابة الطريقة.
(5) محمية
شرح مفصل لرمز التحكم لأذونات الوصول إلى برمجة Java
كتبت المقالة السابقة مقدمًا لأنني لم أتحدث عن الميراث من قبل.
يمكنك ببساطة اعتبار محمية وراثة الفئة الأم للابن ، ولا يمكن الوصول إلى فئات أخرى غير مؤهلة.
(6) الكلمة الرئيسية النهائية
يعني إضافة النوع الأساسي للكلمة الرئيسية النهائية أن هذا المتغير لن يتغير بعد التهيئة. على غرار تعريف C ، تريد أن يكون متغيرًا في هذا البرنامج هذه القيمة دون تغيير. يمكنك استخدام النهائي.
نجل الطبقة العامة {int age = 2 ؛ public static void main (string [] args) {Final int i = 1 ؛ // i = 2 ؛ لا يمكن تغيير القيمة بعد الآن الابن الأخير = الابن الجديد () ؛ // الابن = الابن الجديد () ؛ // لا يمكن تعيين الابن المتغير المحلي النهائي. // يجب أن يكون فارغًا ولا يستخدم تعيين مركب // لا يمكن تعيين SON المتغير المحلي المعدل بواسطة النهائي ، يجب أن يكون فارغًا أو غير مخصص مرة أخرى SON.AGE = 4 ؛ // على الرغم من أن المرجع ثابت ، يمكن تغيير الكائن نفسه. } تغيير باطل (نهائي int c) {// c = this.age ؛ لا يمكن تعيين قيمة جديدة لأن القيمة تحدد فقط مرجع الكائن عندما تمرر الطريقة المعلمة وتحدد مرجع الكائن يشبه هذا / /Age ++ ؛ لا يمكن تغييرها}} الثابت هو التهيئة الساكنة في الأصل ، ويستخدم مع النهائي لاحتلال مساحة التخزين التي لا يمكن تغييرها.
النهائي الثابت هو ثابت خلال فترة التجميع. تتم تسمية الأسماء الثابتة تقليديًا وفقًا لثوابت ج. كلها رسائل رأس المال والكلمات مفصولة عن طريق السطحي.
القيمة النهائية الثابتة = 1 ؛
عند تعديل الطريقة النهائية
الطبقة العامة print {final void canprint () {system.out.println (1) ؛ }} الفئة العامة printson يمتد print {// void cantprint () {} // لا يمكن إعادة كتابة لأنه يتم تعديله بواسطة الفراغ العام الثابت النهائي (سلسلة [] args) {printson ps = new printson () ؛ ps.CannotPrint () ؛ }}يمكن اعتبارها خاصية غير معدلة (ميراث الأجداد) أن الطبقة الوالدية تتطلب أن ترث فئة الطفل. تم تحديد الخاص ضمنيًا على أنه نهائي ، لأن الخاص لا يمنحك الميراث على الإطلاق. هذا أكثر خصوصية من إعطائك الميراث ولكن لا يعدلها.
بالمناسبة ، مسح الأذونات.
عندما يعدل النهائي فئة ، هو منع هذا الفئة من الوراثة.
(7) الميراث والتهيئة
قضية الطلب هنا سؤال مثير للاهتمام. انظر الأمثلة.
فئة جد {private static int i = print () ؛ private static int print () {system.out.println ("g") ؛ العودة 1 ؛ }} فئة الأب يمتد الجد {private static int i = print () ؛ private static int print () {system.out.println ("f") ؛ العودة 1 ؛ }} يمتد ابن الفئة العامة الأب {private static int i = print () ؛ private static int print () {system.out.println ("s") ؛ العودة 1 ؛ } public static void main (string [] args) {system.out.println ("first") ؛ }} هل النتيجة المطبوعة أولاً؟ خطأ.
على الرغم من تنفيذ الطريقة الرئيسية ، إلا أنني أرى أن الابن ، الذي يتطلب تهيئة ثابتة ، لا يتمتع بها ، لكن النتيجة هي S ، أولاً؟
هناك أيضا مشكلة التهيئة. يرث الابن الأب ، لذلك سوف يقوم المترجم بتحميل الأب وتهيئة i. إذا ورث الأب الجد ، فسيقوم المترجم بتحميل الجد ، على غرار العودية.
آخر واحد تم تهيئته هو الجد الأول.
وبالتالي فإن النتيجة النهائية هي: G ، F ، S ، أولاً.
لخص
ما سبق هو كل التفسير التفصيلي لرمز تعدد برمجة Java في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!