هناك 4 أشكال من فصول Java الداخلية التي نستخدمها عمومًا: الطبقات الداخلية العامة ، والطبقات الداخلية المحلية ، والطبقات الداخلية المجهولة المصدر ، والطبقات الداخلية الثابتة. فيما يلي اختبار أجريته لتوضيح خصائص الطبقات الداخلية المختلفة.
فيما يتعلق بخصائص الفئات الداخلية ، يتم شرح الرمز بالتفصيل ، على النحو التالي.
/** اختبار الفئة الداخلية java** interobj النتيجة:** private int i* private interoBj $ intera ia* public interoBj ()* public static void main (java.lang.string [] Public Void PPPP ()* أدناه يوجد برنامج التحويل البرمجي يتم إنشاء طرق ثابتة تلقائيًا للوصول إلى السمات الخاصة أو مستوى حزمة الطريقة* int static int $ 0 (interobj)*/public class interoBJ {private int i = 8 ؛ private intera ia = null ؛ public interobj () {ia = new intera () ؛ p () {pi () ؛ pp () ؛ ppp () ؛ pppp () ؛ pppp () ؛}/ * * في الفئات الداخلية العامة ، يمكن الوصول إلى الأساليب والخصائص في أي مستوى في "فئة المعطف". يمكن لفئة سترة أيضًا* الوصول إلى أساليب وخصائص في أي مستوى في "الفئة الداخلية". لأن الفئة الداخلية يمكن أن تحمل إشارة إلى كائن فئة المعطف. * بالنسبة للطرق والسمات الخاصة التي يجب الوصول إليها بواسطة الفئة الداخلية ، سيقوم برنامج التحويل البرمجي تلقائيًا بإنشاء الطرق الثابتة "الحزمة" التي تتوافق مع الطرق والسمات الخاصة *. تحتاج هذه الطرق إلى استخدام كائن الفئة الخارجية كمعلمة * ، بحيث يمكنك الوصول إلى الأساليب الخاصة والسمات * في الفئة الخارجية في الأساليب الثابتة "الحزمة". * المبدأ نفسه هو نفسه بالنسبة لفئة سترة للوصول إلى الأساليب والخصائص الخاصة في الفصل الداخلي. عندما يتم تجميع الفئة الداخلية ، ستقوم * بإنشاء طريقة ساكنة "حزمة" ثابتة تتوافق مع الأساليب والخصائص الخاصة التي تحتاج إلى الوصول إليها بواسطة فئة سترة. *. pa1 () * */class intera {private int ia = 9 ؛ private void pa () {system.out.println ("هذا هو intera.pa: ia ="+ia+"، interobj.i ="+geti ()) ؛} public void () ia = "+ia+" ، interobj.i = "+geti ()) ؛}}/ * * ليست الفئات الداخلية المحلية مرئية فقط داخل الطرق ، والميزات الأخرى هي نفس الفئات الداخلية العامة. * بالنسبة للمتغيرات المحلية التي يجب الوصول إليها ، يجب ضبطها على النهائي ، لأنه على الرغم من أن الفئة الداخلية المحلية يمكن أن تحمل * إشارات إلى كائن الفئة الخارجية للوصول إلى الخصائص والأساليب ، إلا أنه لا يمكن الوصول إلى المتغيرات المحلية في طريقة الفئة الخارجية. جميع المترجمين "نسخ" نسخة من المتغيرات المحلية التي يجب الوصول إليها في الفئة الداخلية المحلية (ولكن لا توجد نسخة لأنواعها الأساسية التي لا تتغير فيها الأنواع الأساسية والتعويم والسلسلة). من أجل التأكد من أن القيمة المتغيرة المنسقة والكائن * المشار إليها من خلال قيمة المتغير في الطريقة الخارجية هي نفس الكائن ، يجب أن يتم تعيين تلك المتغيرات المحلية المستخدمة من قبل الفئة المحلية إلى النهائي ولا يمكن تعديلها * ، لذا لضمان أن المتغيرات المسكونة في الجزء المحلي والمتغيرات في الطريقة الخارجية للنقطة نفسها. يبقى تعيين المتغير * على عناصر التحكم النهائية فقط التي يشير إليها عنوان الكائن الذي يشير إليه المتغير دون تغيير ، بدلاً من أن الخصائص الداخلية للكائن الذي يشير إليه لا يمكن تغييره. *. يقوم برنامج التحويل البرمجي تلقائيًا بإنشاء طريقة ثابتة للوصول إلى خصائص خاصة أو مستوى حزمة الأسلوب * الوصول الثابت باطلب $ 0 (interobj $ 1 $ interb) */public void pi () {final int s = 5 ؛ اختبار نهائي test = new test () "، (الطريقة) pi.s ="+s+"، test.t ="+test.gett ()) ؛}} interb Ib = new interb () ؛ // يتم تغيير الحالة الداخلية للاختبار الاختبار المشار إليها بواسطة الفئة الداخلية المحلية. // عندما تسمى النتيجة ib.pb () ، فإن الإخراج هو القيمة التي تم تغييرها 100Test.Sett (100) ؛ ib.pb () ؛}/ * * الفئة الداخلية الثابتة ، وتستخدم عندما لا تكون هناك حاجة للاحتفاظ بمرجع إلى "كائن فئة المعطف". * * نتيجة انعكاس Interc: (لا تحتوي الفئة الداخلية الثابتة على مرجع إلى كائن فئة المعطف) * private int interced () * private void pc () */static class interc {private int ic = 6 ؛ private void pc () {system.out.println ("هذا هو interc.pc: ic ="+ic) ؛} * يمكنك الوصول إلى أي أذونات في الفئة الداخلية*/public void pp () {intera ia = new intera () ؛ ia.pa () ؛ ia.pa1 () ؛ interc ic = new interb () ؛ ic.pc () ؛ * لا يمكنك بناء فئات داخلية غير استاتيكية لأنه لا يوجد كائن في الطريقة الثابتة التي تشير إلى "فئة المعطف" لبناء * كائن الفئة الداخلية التي يجب الرجوع إليها بواسطة كائن فئة المعطف. */public static void ppp () {// intera ia = intera () // interb ib = new interb () ؛}/ * * اختبار الفئة الداخلية المجهولة */public void pppp () {testInterface tif = new testInterface () {public void pppp () ib = 7 ، (الطريقة) pi.s = 5 ، test.t = 100 * هذا هو intera.pa: ia = 9 ، interobj.i = 8 * هذا intera.pa1: ia = 9 ، interobj.i = 8 * هذا interc هذا هو interc.pc: ic = 6*testInterface.noname*/public static void main (string [] args) {interoBj io = new interoBj () ؛ io.p () ؛}}/** واجهة لإنشاء فئة محلية محلية*/interface {public pppp () ؛ int gett () {return t ؛} public void sett (int t1) {t = t1 ؛}}اسمحوا لي أن أشارك مثالًا آخر:
الفئة العامة الداخلية {static toy toy = new toy () {string name = "lao wu" ؛@Override public void Jump () {system.out.println (name+"out of the Earth") ؛ go () ؛}} ؛/*inner class: class ed in the class*1. الفئة الداخلية العضو: *1.1 يمكن للأعضاء الفئة الداخلية الوصول مباشرة إلى خصائص الفئة الخارجية *1.2 الوصول إلى الكائن الحالي للفئة الخارجية من خلال اسم الفئة الخارجية. بهذه الطريقة * العضو الفئة الداخلية كائن مثيل: اسم الفئة الخارجية. اسم الفئة الداخلية اسم المرجع = كائن الفئة الخارجية. new internal class name () ؛ *2. الفئة الداخلية الثابتة*2.1 لا يمكن الوصول إلى موارد الأعضاء في الفئة الخارجية داخل الفئة الداخلية الثابتة ، ويمكنها فقط الوصول إلى الموارد الثابتة للفئة الخارجية من خلال اسم الفصل الدراسي*كائن فئة داخلية ثابتة: اسم الفئة الخارجية. اسم الفئة الداخلية اسم المرجع = اسم الفئة الخارجية الجديدة. اسم الفئة الداخلية () ؛ *3. الفئة الداخلية المحلية:*3.1 يمكنك أيضًا الوصول مباشرة إلى خصائص الفئة الخارجية*3.2 يمكنك أيضًا الوصول إلى الكائن الحالي للفئة الخارجية*3.3 لا يمكن الوصول إلى الفئة الداخلية المحلية إلا داخل الطريقة ، ويمكن أن يكون المعدل هو فقط الافتراضي*4. فئة داخلية مجهولة: عندما تكون هناك حاجة إلى مثيل فئة فرعية معينة لفئة ما ، يتم إنشاء فئة مؤقتًا باستخدام * اسم الفئة الجديدة () *} ؛ *4.1 تصل الفئة الداخلية المجهولة المصدر إلى خصائص الطريقة الخارجية ، وسيتم تحويل هذه الخاصية إلى وجود سمات وطرق جديدة ثابتة في الطبقة الداخلية المجهولة ، ولا يمكن استخدامها إلا داخل الفئة الداخلية المجهولة **/PRICETER (plail) PC1 = شخص جديد ("Jian Zihao" ، 18). New Computer ("Alien") ؛ pc.rungame () ؛ pc1.rungame () ؛ person.computer1 pc11 = new person.computer1 ("Internet Cafe Computer") ؛ pc11.rungame () ؛ per.usecomputer () computer () {@override public void rungame () {// todo method method method method subsystem.out.println (per.age+"alled"+per.name+"play lalalala demasita") ؛ system.out.println (str) ؛ Toy () {Override public void Jump () {system.out.println ("Brack Out of the Earth") ؛ }} ؛*/toy.jump () ؛ toy.jump () ؛ // toy.go () ؛ // system.out.println (toy.) ؛}} person {string name ؛ int age ؛ static int ate1 = 18 ؛ static string 1 = "full expert" playgame () {system.out.println (name+"play game") ؛} الفئة العامة كمبيوتر {string name ؛ الكمبيوتر العام (اسم السلسلة) {super () ؛ this.name = name ؛ فئة ثابتة computer1 {string name ؛ public Computer1 (اسم السلسلة) {super () ؛ this.name = name ؛} public void rungame () {system.out.println (name+"run game") ؛ system.out.println (person.age1+""+person.name1+"play") ؛ {super () ؛ this.name = name ؛} public void rungame () {system.out.println (name+"run game") ؛ system.out.println (person.Age+""+person.name RunGame () ؛} لعبة الفئة العامة {public void Jump () {system.out.println ("Jump toy") ؛}}لخص
ما سبق هو كل التفسير التفصيلي لقانون الاختبار الداخلي Java في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!