هذا
يجب أن يكون هناك دائمًا شيء لتمثيل الكائن الحالي للفئة. تمامًا مثل هذا المؤشر في C ++ ، تمثل هذه الكلمة الرئيسية في Java الإشارة إلى الكائن الحالي.
لديها ثلاث وظائف رئيسية:
1. استدعاء البنائين الآخرين في المُنشئ.
على سبيل المثال ، هناك فصل دراسي يحتوي على ثلاثة منشئين. إذا اتصلت بمنشئ آخر في مُنشئ معين ، فإن هذا () مطلوب ، وليس من الممكن استخدام الطالب () مباشرة.
2. إرجاع الإشارة إلى الكائن الحالي.
3. التمييز بين أسماء متغير الأعضاء وأسماء المعلمات.
انظر المثال التالي:
طالب الطبقة العامة {اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ كلية السلسلة الخاصة ؛ الطالب العام () {العمر = 20 ؛ } الطالب العام (اسم السلسلة) {this () ؛ // لا يمكن الاتصال بالطالب ، استخدم فقط طريقة (). this.name = name ؛ System.out.println ("اسم الطالب هذا"+اسم) ؛ } الطالب العام (اسم السلسلة ، كلية السلسلة) {this (name) ؛ // c ++ يمكنك استدعاء منشئات أخرى this.college = college ؛ System.out.println ("اسم الطالب هذا هو"+name+"College"+College) ؛ } ترقية الطالب العام () {Age ++ ؛ إرجاع هذا ؛ } public void print () {system.out.println ("الاسم هو:"+name+"العمر هو:"+Age+"College IS:"+College) ؛ } public static void main (string [] args) {student1 = new student ("linc") ؛ الطالب 2 = طالب جديد ("لينك" ، "كلية شنيانغ") ؛ student2.upgrade (). print () ؛ }}عندما تضيع في المحيط الشاسع للأشياء ، لا تنس استخدام هذا للعثور على نفسك.
ممتاز
سوبر هو هذا الأب. من منظور كائنات الوجه ، من السهل فهم هذين المفهومين.
وراثي الفئات الفرعية من فئة الوالدين. وُلدت الخصائص والأساليب المحمية وأكثر من فئة الوالدين مع الفئة الفرعية. فلماذا لا تزال بحاجة إلى الكلمة الرئيسية سوبر؟
أولاً ، انظر إلى بناء فئة الوالدين. عند إنشاء الفئة الفرعية ، يجب أولاً استدعاء المُنشئ الافتراضي للفئة الأصل ، والتي تتوافق مع خصائص البناء لـ C ++. عندما يكون لدى الفئة الأصل مُنشئات متعددة ، تحتاج إلى تحديد أي واحد يمكن الاتصال به. هذا يتطلب سوبر (Arg1 ، Arg2 ...).
تجدر الإشارة إلى أنه عند استدعاء مُنشئ الفئة الأساسية في مُنشئ الفئة الفرعية ، يجب كتابة Super كأول ، وإلا سيتم الإبلاغ عن خطأ.
ثانياً ، استدعاء هذه الطريقة للفئة الأصل في بعض الطرق التي تحدد الفئة الفرعية فئة الأصل. كما نعلم جميعًا ، فإن بعض طرق الكتابة فوق فئات الوالدين في الفئات الفرعية هي وسيلة للتعدد المتعدد الموجهة نحو الكائنات ، ولأسباب أخرى مختلفة ، يجب استدعاء هذه الطريقة من الفئة الأصل في هذه الطريقة للتمييز. في هذا الوقت ، يجب استخدام Super لإكماله.
يمتد قائد الفصل الدراسي العام الطالب {Private String Duty ؛ public classleader () {duty = "class monitor" ؛ } public classLeader (سلسلة واجب ، اسم سلسلة ، سلسلة سلسلة) {super (name ، college) ؛ this.duty = duty ؛ } public void print () {super.print () ؛ System.out.println ("Duty IS" + duty) ؛ } public static void main (string [] args) {classleader leader = new ClassLeader ("Life" ، "Linc" ، "Shenyang") ؛ زعيم. }}ضع ملفين فئة في نفس الدليل ، وتجميع وتشغيل:
D:/Workspace/Java/Project261/Super> Java -D. *Java D:/Workspace/Java/Project261/Super> Java Classleader
نتائج التشغيل:
اسم الطالب هذا هو LINC اسم الطالب هذا هو كلية لينك هو اسم شنيانغ هو: LINC AGE: 20 College IS: Shenyang Duty Is Life
انظر كيف يتم التعامل معها بلغات أخرى:
يوفر C# الكلمة الأساسية الأساسية لإكمال الوظائف المشابهة لـ Super ، و C ++ يدعوها مباشرة باسم الفئة الأساسية.