في الآونة الأخيرة ، قال أحد الأصدقاء إنه يريد أن يقول إنه كان يتعلم جافا مؤخرًا. ما زال لم يفهم لغات البرمجة الموجهة للكائنات. من أجل مساعدته "تحويل" بشكل أسرع ، كتبت هذا المقال. لأنه من مستوى البنية الفوقية. تتشابه أفكار جميع لغات البرمجة الموجهة للكائنات ، وهذه الخصائص الثلاث هي الأعمدة في التفكير. بعد ذلك ، سأركز على شرح الخصائص الرئيسية الثلاث لجافا.
تحتوي لغة البرمجة الموجهة نحو الكائنات على ثلاث ميزات رئيسية: "التغليف" و "الميراث" و "تعدد الأشكال".
طَرد
في البرمجة الموجهة للكائنات ، يعد التغليف (التغليف) حرفيًا معنى العبوة ، مما يعني استخدام أنواع البيانات المجردة لتغليف البيانات والعمليات القائمة على البيانات معًا ، مما يجعلها كيانًا مستقلًا لا ينفصل. في الواقع ، هو تغليف الأساليب والبيانات اللازمة لتشغيل الكائن في البرنامج لنشر واجهته. يتم حماية البيانات داخل نوع البيانات المجردة ، وإخفاء التفاصيل الداخلية قدر الإمكان ، والاحتفاظ فقط ببعض الواجهات الخارجية لجعلها تتصل بالخارج. بمعنى آخر ، لا يحتاج المستخدم إلى معرفة التفاصيل الموجودة داخل الكائن (بالطبع ، لا توجد طريقة لمعرفة ذلك) ، ولكن يمكن الوصول إلى الكائن من خلال الواجهة التي يوفرها الكائن إلى الخارج. من حيث Layman ، لا تحتاج الكائنات الأخرى المرتبطة بهذه الواجهات إلى الاهتمام بتنفيذ الكائن لاستخدام هذا الكائن. المفهوم هو "لا تخبرني كيف فعلت ذلك ، فقط افعل ذلك."
لذلك ، يحدد التغليف خصائص كائن ويوفر بعض طرق السمات التي يمكن الوصول إليها من قبل العالم الخارجي. إذا لم نرغب في الوصول إلى العالم الخارجي ، فلا يتعين علينا توفير طرق للوصول إلى العالم الخارجي. ولكن إذا كان الفصل لا يوفر طرقًا للعالم الخارجي للوصول ، فلن يكون لهذا الفئة معنى.
على سبيل المثال ، نعتبر كائنًا منزلًا ، والخلفيات الجميلة في الداخل ، مثل الأرائك وأجهزة التلفزيون ومكيفات الهواء ، وما إلى ذلك ، كلها سمات خاصة للمنزل ، ولكن إذا لم يكن هناك تغطية جدار ، فلا توجد خصوصية على الإطلاق! بسبب جدار الحظر ، لا يمكننا الحصول على خصوصيتنا الخاصة فحسب ، بل نغير أيضًا الزخارف الداخلية عند الإرادة دون التأثير على الآخرين. ولكن إذا لم تكن هناك أبواب ونوافذ ، فما معنى صندوق أسود ملفوف بإحكام؟ لذلك ، يمكن للآخرين أيضًا رؤية المشهد من خلال الأبواب والنوافذ. لذلك ، الأبواب والنوافذ هي الواجهات التي خلفها كائن المنزل حتى يصل العالم الخارجي.
بشكل عام ، يجب إضافة المعدل الخاص قبل السمة في الفصل. ثم حدد أساليب getter و setter. بعد ذلك ، لم تعد الكائنات الموجودة في وظيفتنا الرئيسية استدعاء خصائصها مباشرةً ، ولا يمكن استدعاؤها إلا من خلال أساليب Getter و Setter.
ثلاث فوائد للتغليف
1. حزمة جيدة يمكن أن تقلل من الاقتران.
2. يمكن تعديل الهيكل داخل الفصل بحرية.
3. يمكن إعطاء سيطرة أكثر دقة للأعضاء.
4. إخفاء المعلومات وتنفيذ التفاصيل.
المعدل
بادئ ذي بدء ، تحتاج إلى فهم ما هو المعدل. يمكن استخدام معدلات الوصول لتعديل نطاق الوصول للسمات والأساليب.
في العملية الموجهة للكائنات ، نستخدم التحكم في الإذن لإضافة أذونات إلى الفئة المغلفة لتقييد التلاعب في الفئة الغرباء ، وذلك لضمان أمان البيانات والأساليب في الفصل. يمكن القول أن الفئة هي كيان منطقي يلف السمات والأساليب ذات الصلة. بالنسبة لبعض الخصائص أو الأساليب في كائن ما ، يمكن أن تكون خاصة ولا يمكن الوصول إليها من قبل العالم الخارجي. يمكن أيضًا مشاركته ويمكن الوصول إليه من قبل أي شخص غريب. وبهذه الطريقة ، توفر الكائنات مستويات مختلفة من الحماية للبيانات الداخلية لمنع الأجزاء غير ذات الصلة من البرنامج من تغيير أو استخدام أجزاء خاصة من الكائن بشكل غير صحيح ، مما تسبب في حدوث أخطاء غير ضرورية في البرنامج.
المعدلات في Java عامة ومحمية وافتراضية وخاصة. يوضح هذا التغليف الموجهة للكائن ، ويجب أن نبذل قصارى جهدنا لتقليل الأذونات ، وذلك لتحسين الأمان.
كما هو موضح في الشكل ، فإنه يمثل نطاق الوصول لمعدلات الوصول المختلفة ، مثل الخصائص أو الأساليب المعدلة بواسطة الخاص ، والتي لا يمكن الوصول إليها إلا في هذه الفئة. إذا لم يتم إضافة أي تعديل ، يكون الافتراضي افتراضيًا ، ويمكن الوصول إليه واستخدامه افتراضيًا في الفئة الحالية ونفس الحزمة.
الوصول إلى أذونات الفئة الفئة الفرعية الفئة الفرعية الأخرى
العام ∨ ∨ ∨ ∨
حماية ∨ ∨ × ×
الافتراضي ∨ ∨ × ×
خاص ∨ × × ×
إذا لم يتم إضافة أي تعديل قبل السمة ، يكون الإذن الافتراضي افتراضيًا. يمكننا تعديل قيمة السمة مباشرة عن طريق إنشاء كائن ، ولا تنعكس خصائص التغليف. هذا ليس آمنًا في البرمجة ، لذلك نحتاج إلى استخدام التغليف لتحسين الكود لدينا.
مثال على المعدلات
أولاً ، نحدد أربعة فصول شخص ، أو الوالد ، والمعلم ، والطالب ، ومقارنة الاختلافات بين الحزم الأخرى والفئات الفرعية والحزم والفصل. يظهر مخطط الموقع لكل فئة.
package com.java.test ؛ public class person {public string name = "Zhang San" ؛ public void propucemyself () {system.out.println (name) ؛ }}الاسم عام. إذا لم يكن هناك خطأ في التجميع ، فهذا يعني أن المتغير العام لديه إمكانية الوصول إلى هذه الفئة.
حزمة com.java.test ؛ طالب الطبقة العامة {person p = new person () ؛ اختبار void العام () {system.out.println (p.uname) ؛ }}الطالب والشخص في نفس الحزمة. إذا لم يكن هناك خطأ في التجميع ، فهذا يعني أن المتغير له حقوق الوصول في نفس الحزمة.
حزمة com.java.test1 ؛ استيراد com.java.test.person ؛ مدرس الطبقة العامة يمتد الشخص {العصر العام ؛ الشخص p = شخص جديد () ؛ public void test1 () {system.out.println (p.uname) ؛ }}الطالب والشخص ليسا في نفس الحزمة ، لكن المعلم يرث فصل الشخص. إذا لم يكن هناك خطأ في التجميع ، فهذا يعني أن المتغير له حقوق الوصول في الحزمة الفرعية.
package com.java.test1 ؛ import com.java.test.person ؛ public class parents {public string uname = "haha" ؛ الشخص p = شخص جديد () ؛ public void test2 () {system.out.println (p.uname) ؛ }}الوالد والشخص ليسا في نفس الحزمة. إذا لم يكن هناك خطأ في التجميع ، فهذا يعني أن المتغير لا يحتوي على أذونات الوصول.
بعد الاختبار أعلاه ، إذا كان من الممكن تجميعها جميعها وإقرارها ، فهذا يعني أن الفئات المعدلة مع الجمهور يمكنها الوصول إلى بعضها البعض في هذه الفئة ، نفس الحزمة ، الفئة الفرعية ، وغيرها من الحزم.
بدأنا أيضًا في اختبار مشكلة الإذن المحمية. إذا كان الشخص والمعلم والطالب يمكنه تجميع والمرور ، فهذا يعني أن الفصول المعدلة مع المحمية يمكنها الوصول إلى بعضها البعض في هذا الفصل ، نفس الحزمة ، والفئات الفرعية. إذا لم يتم تجميع الوالد ولم يمر ، فهذا يعني أنه لا يمكن للحماية الوصول إلى بعضها البعض في فئات دون علاقات الميراث خارج الحزمة.
ابدأ أيضًا في اختبار مشكلة الإذن الافتراضية. إذا كان بإمكان الشخص والطالب تجميع والمرور ، فهذا يعني أن الفصول المعدلة مع الافتراضي يمكنها الوصول إلى بعضها البعض في هذه الفئة ، نفس الحزمة ، والفئات الفرعية. لا يمكن لتجميع الوالدين والمعلمين دون تمرير فئة الوالد والمعلم الوصول إلى بعضهما البعض بغض النظر عما إذا كانت هناك علاقة ميراث.
بدأنا أيضًا في اختبار مشكلة الإذن الخاصة. إذا كان من الممكن تجميع الشخص وإقراره ، فهذا يعني أن الفئات المعدلة مع القطاع الخاص يمكنها الوصول إلى بعضها البعض في هذه الفئة ، نفس الحزمة ، والفئات الفرعية. لا يمكن للوالدين والمعلم والطالب تجميع دون تمرير الخاص للإشارة إلى أنه لا يمكن الوصول إلى الفصول الدراسية المعدلة بالخاص إلا في هذا الفصل.
بشكل عام ، يجب إضافة المعدلات الخاصة قبل السمات في الفصل. ثم حدد أساليب getter و setter. بعد ذلك ، لم تعد الكائنات الموجودة في وظيفتنا الرئيسية استدعاء خصائصها مباشرةً ، ولا يمكن استدعاؤها إلا من خلال أساليب Getter و Setter.
شنطة
دعني أخبرك بوظيفة الكيس
في بعض الأحيان عندما تواجه اسم فئة البرنامج قد يتم تكراره ، يمكننا استخدام مفهوم الحزمة لحل مشكلتنا. الغرض من الحزمة هو إدارة ملفات Java وحل تعارضات الملفات بنفس الاسم. هذا مشابه لخزانة الملابس. هل لدينا أقسام وأدراج مختلفة في خزانة الملابس؟ نضع الملابس بشكل منفصل في فئات مختلفة ، والتي هي أكثر مواتية لإدارتنا.
لتحديد الحزمة ، نستخدم الكلمة الرئيسية الحزمة ، بالإضافة إلى اسم الحزمة لدينا.
Package com.java.test ؛ // ملاحظة: يجب وضعه في السطر الأول من البرنامج المصدر ، ويمكن فصل اسم الحزمة بواسطة "." لافتة. يتم تهجئة مواصفات التسمية للحزمة بكل الأحرف الصغيرة.
الحزم شائعة الاستخدام في نظام Java
يحتوي Java. (وظيفة). (الفئة) java.lang.
لاستخدام الفصل في ملف آخر في حزم مختلفة ، تحتاج إلى استخدام الكلمة الرئيسية للاستيراد. على سبيل المثال ، استيراد com.java.test1.test.java. في الوقت نفسه ، إذا استيراد com.java.test1*، استيراد جميع الملفات أسفل الحزمة.
هذه الكلمة الرئيسية
1. هناك ثلاثة تطبيقات رئيسية لهذه الكلمة الرئيسية:
(1) هذا يدعو السمات في هذه الفئة ، أي متغيرات الأعضاء في الفصل ؛
(2) هذا يدعو الطرق الأخرى في هذا الفصل ؛
(3) يستدعي هذا المنشئون الآخرون في هذه الفئة ، ويجب وضعه في السطر الأول من المنشئ عند الاتصال.
الطالب العام {public student (اسم السلسلة) {// تحديد مُنشئ مع معلمات رسمية} الطالب العام () {// تحديد طريقة ، الاسم هو نفس الفصل ، لذلك هو المُنشئ ("Hello!") ؛ } اسم السلسلة ؛ . // تمرير قيمة المتغير المحلي إلى متغير العضو}}كما في الكود أعلاه ، يوجد اسم متغير عضو ، وهناك معلمة رسمية في الطريقة ، والاسم هو أيضًا اسم. ثم يتم تمرير قيمة اسم المعلمة الرسمية إلى اسم متغير العضو في الطريقة.
الكلمة الرئيسية التي تمثلها متغيرات الأعضاء أو الأساليب في الكائن. بمعنى أنه إذا تمت إضافة متغير مع هذه الكلمة الرئيسية ، فإنه يشير إلى متغير العضو أو طريقة الكائن ، بدلاً من المعلمات الرسمية أو المتغيرات المحلية لطريقة العضو. لهذا السبب ، في الكود أعلاه ، يمثل هذا. name متغير العضو في الكائن ، والمعروف أيضًا باسم خصائص الكائن ، والاسم المتبع هو المعلمة الرسمية للطريقة. الكود this.name = الاسم هو تمرير قيمة المعلمة الرسمية إلى متغير العضو.
إذا كان هناك العديد من مُنشئات في الفصل لأن أسمائهم متشابهة ونفس اسم الفصل ، فما هو المُنشئ الذي يسمى هذا؟ في الواقع ، هذا هو نفسه استخدام طرق أخرى للإشارة إلى المُنشئين ، ويتم استدعاؤها من خلال معلمات رسمية. كما في المثال أعلاه ، إذا تمت إضافة معلمة بعد هذه الكلمة الرئيسية ، فهذا يعني أنها تشير إلى مُنشئ يحتوي على معلمات. إذا كانت هناك الآن ثلاث طرق بناء ، وهي لا توجد معلمات ومعلمة واحدة ومعلمتين. ثم سيحدد برنامج التحويل البرمجي Java أي مُنشئ للاتصال بناءً على عدد المعلمات التي تم تمريرها. كما يتضح من المثال أعلاه ، يمكن استخدام هذه الكلمة الرئيسية ليس فقط للمتغيرات المرجعية للأعضاء ، ولكن أيضًا للمرجعية.
الطبقة الداخلية
من السهل جدًا فهم الفصل الداخلي من الخارج. الطبقة الداخلية هي وضع تعريف فئة داخل تعريف فئة أخرى. بطبيعة الحال ، يتوافق هذا ، فئة تحتوي على فئة داخلية تسمى فئة خارجية.
سيسأل العديد من المبتدئين بالتأكيد لماذا يجب تحديد فصل واحد في فصل آخر؟
في بعض الأحيان ، هناك بعض المشكلات في برامجنا التي يصعب حلها باستخدام واجهات. في هذا الوقت ، يمكننا استخدام القدرة التي توفرها الفصول الداخلية لروث فصول ملموسة أو مجردة متعددة لحل مشكلات البرمجة هذه. يمكن القول أن الواجهات فقط تحل بعض المشكلات ، في حين أن الطبقات الداخلية تجعل حل الميراث المتعدد أكثر اكتمالا.
هناك جملة في "Think in Java": السبب الأكثر جاذبية لاستخدام الفصول الداخلية هو أن كل فئة داخلية يمكن أن يرث بشكل مستقل تنفيذ (واجهة) بشكل مستقل ، لذلك ما إذا كانت الفئة المحيطية قد ورثت تنفيذًا معينًا (واجهة) ليس له أي تأثير على الفئة الداخلية.
الواجهة العامة الأب {} الواجهة العامة الأم {} ابن الفئة العامة ينفذ الأب ، الأم {} ابنة الفئة العامة تنفذ الأب {class mother_ تنفذ الأم {}}ميزات الطبقة الداخلية
1. يمكن للفئة الداخلية استخدام مثيلات متعددة ، كل مثيل له معلومات الحالة الخاصة به ومستقلة عن معلومات الكائن المحيطي الأخرى.
2. في فئة طرفية واحدة ، يمكن لفئات داخلية متعددة تنفيذ نفس الواجهة بطرق مختلفة ، أو ترث نفس الفئة.
3. لحظة عند إنشاء كائن فئة داخلي لا يعتمد على إنشاء كائنات فئة المحيطية.
4. لا توجد علاقة مربكة "IS-A" في الطبقة الداخلية ، إنها كيان مستقل.
5. يوفر الفئة الداخلية تغليفًا أفضل ، ولا يمكن الوصول إلى فئات أخرى باستثناء الفئة المحيطية.
Package com.java.test ؛ فئة عامة خارجية {اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int getage () {return Age ؛ } public void setage (int age) {this.age = age ؛ } display void public () {system.out.println ("يُطلق على عرض Outerclass") ؛ } الفئة العامة innerclass {public innerclass () {name = "chenssy" ؛ العمر = 23 ؛ } Outerclass public getOuterClass () {return OuterClass.This ؛ } public void display () {system.out.println ("name:" + getName () + "؛ Age:" + getage ()) ؛ }} public static void main (string [] args) {Outerclass Outerclass = new Outerclass () ؛ outerclass.innerclass innerclass = Outerclass.new innerclass () ؛ innerclass.display () ؛ innerclass.getouterClass (). display () ؛ }} الاسم: chenssy ؛ العمر: 23يتم استدعاء عرض CONCLASS
نحن بحاجة إلى أن نكون واضحين أن الفصول الداخلية هي مفهوم وقت الترجمة. بمجرد تجميعها بنجاح ، فإنهم ينتمون إلى فئتين مختلفتين تمامًا من فصول طرفية (بالطبع لا تزال مرتبطة).
نرى أيضًا كيفية الرجوع إلى الفئة الداخلية: بالإشارة إلى الفئة الداخلية ، نحتاج إلى تحديد نوع هذا الكائن: OuterClasName.innerClassName. في الوقت نفسه ، إذا كنا بحاجة إلى إنشاء كائن فئة داخلي ، فيجب علينا استخدام كائن الفئة الخارجية لإنشاء فئة داخلية من خلال
في الوقت نفسه ، إذا كنا بحاجة إلى إنشاء مرجع إلى كائن الفئة الخارجية ، فيمكننا استخدام OuterClassName. هذا ، حتى نتمكن من إنشاء مرجع إلى الفئة الخارجية بشكل صحيح.
في Java ، تنقسم الفصول الداخلية بشكل أساسي إلى فصول داخلية للأعضاء ، والطبقات الداخلية المحلية ، والطبقات الداخلية المجهولة المصدر ، والطبقات الداخلية الثابتة.
العضو الفئة الداخلية
الطبقة الداخلية العضو هي أيضا الطبقة الداخلية الأكثر شيوعا. إنه عضو في الفئة المحيطية ، بحيث يمكنه الوصول إلى جميع سمات وطرق الفئة المحيطية دون قيود. على الرغم من أنها خاصة ، إذا كانت الفئة المحيطية تريد الوصول إلى سمات وأساليب الفئة الداخلية ، إلا أنها تحتاج إلى الوصول إلى مثيل الفئة الداخلية.
يجب الاهتمام بنقطتين في الفئة الداخلية للأعضاء.
لا يمكن أن يكون هناك أي متغيرات وطرق ثابتة في الفئة الداخلية للعضو ؛
يتم إرفاق الفصول الداخلية للأعضاء بالفصول الطرفية ، لذلك لا يمكن إنشاء فئات داخلية إلا إذا تم إنشاء الفصول الطرفية أولاً.
الفئة العامة الخارجية {private string str ؛ public void outerdisplay () {system.out.println ("Outerclass ...") ؛ } الفئة العامة innerclass {public void innerdisplay () {// استخدم السمة str في str = "chenssy ..." ؛ system.out.println (str) ؛ // استخدم الطريقة OuterDisplay () ؛ }} /*الموصى بها لاستخدام getxxx () للحصول على فئات داخلية للأعضاء ، خاصةً عندما لا يحتوي مُنشئ الفئة الداخلية على معلمات* / public innerclass getInnerClass () {return new innerclass () ؛ } public static void main (string [] args) {OuterClass Outer = new Outerclass () ؛ outerclass.innerclass inner = outer.getInnerClass () ؛ inner.innerdisplay () ؛ }}أنا شخصياً أوصي باستخدام getxxx () للحصول على فئة داخلية للأعضاء ، خاصة عندما لا يحتوي مُنشئ هذه الفئة الداخلية على معلمات.
فئة داخلية محلية الجملة
تتداخل الطبقات الداخلية المحلية في الأساليب والنطاقات. استخدام هذه الفئة هو أساسا لتطبيق وحل المشكلات المعقدة نسبيا. أريد إنشاء فصل للمساعدة في حلنا. في ذلك الوقت ، لا أريد أن يكون هذا الفصل علنيًا ، حتى نتمكن من إنشاء فصول داخلية محلية.
يتم تجميع الفصول الداخلية المحلية مثل الفصول الداخلية الأعضاء. لا يمكن استخدامها إلا في هذه الطريقة والسمة. إذا لم تكن في هذه الطريقة والسمة ، فستكون غير صالحة.
محددة في الطريقة:
Public Class Parcel5 {public destionation وجهة (سلسلة str) {class pdeStionation يطلق Destion {private string label ؛ pdestion الخاص (سلسلة whereto) {label = whereto ؛ } السلسلة العامة readlabel () {return label ؛ }} إرجاع PDESTION جديد (STR) ؛ } public static void main (string [] args) {parcel5 parcel5 = new parcel5 () ؛ destion d = parcel5.desionation ("chenssy") ؛ }}محددة في النطاق:
Public Class Parcel6 {private void internalTracking (boolean b) {if (b) {class trackingslip {private string id ؛ trackingslip (سلسلة s) {id = s ؛ } string getLip () {return id ؛ }} trackingslip ts = new trackingslip ("chenssy") ؛ سلسلة السلسلة = ts.getSlip () ؛ }} public void track () {internalTracking (true) ؛ } public static void main (string [] args) {parcel6 parcel6 = new parcel6 () ؛ Parcel6.track () ؛ }}فئة داخلية مجهولة
الفئة العامة الخارجية {public innerclass getInnerClass (Final int num ، string str2) {return new innerclass () {int number = num + 3 ؛ Public int getNumber () {return number ؛ }} ؛ / * ملاحظة: لا يمكن أن يحفظ Semicolons */} الفراغ الثابت العام (سلسلة [] args) {OuterClass Out = new OuterClass () ؛ innerclass inner = out.getInnerClass (2 ، "chenssy") ؛ System.out.println (inner.getNumber ()) ؛ }} واجهة innerclass {int getNumber () ؛}1. فئات داخلية مجهولة لا تحتوي على معدلات الوصول.
2. فئة داخلية مجهولة المصدر جديدة ، يجب أن تكون هذه الفئة موجودة أولاً. إذا علقت هذه الواجهة الداخلية ، فسيحدث خطأ في التجميع.
3. انتبه إلى المعلمات الرسمية لطريقة getInnerClass (). يتم تعديل المعلمة الرسمية الأولى مع النهائي ، في حين أن المعلمة الثانية لا. في الوقت نفسه ، وجدنا أيضًا أن المعلمة الرسمية الثانية لم يتم استخدامها في الفئة الداخلية المجهولة ، لذلك عندما يجب استخدام المعلمة الرسمية للطريقة من قبل فئة داخلية مجهولة المصدر ، يجب أن تكون هذه المعلمة الرسمية نهائية.
4. لا يوجد مُنشئ لفصول داخلية مجهولة المصدر. لأنه ليس لديه حتى اسم لبناءه.
فئة داخلية ثابتة
يمكن أن يعدل Static متغيرات الأعضاء والأساليب وكتل التعليمات البرمجية والفئات الداخلية الأخرى. نطلق على الفصول الداخلية المعدلة بستاتيك ثابتًا ، لكننا نفضل أن نسميها فصولًا داخلية متداخلة. الفرق الأكبر بين الطبقات الداخلية الثابتة والفصول الداخلية غير الستراتية هو أنه بعد اكتمال التجميع ، سيتم إخفاء مرجع ، وسيشير الاستخدام إلى محيطه. لكن الطبقة الداخلية الثابتة لا ، مما يعني أن إنشاء الطبقة الداخلية الثابتة لا يحتاج إلى الاعتماد على الطبقات المحيطية ، ولا يمكنه استخدام المتغيرات غير القتالية وأساليب أي فئة طرفية.
الطبقة العامة الخارجية {private String Sex ؛ اسم السلسلة الثابتة العامة = "Chenssy" ؛ / ***الفئة الداخلية الثابتة*/ الفئة الثابتة innerclass1 {/*يمكن أن يوجد أعضاء ثابتون في الفئة الداخلية الثابتة*/ سلسلة ثابتة عامة _name1 = "chenssy_static" ؛ لا يمكن للفئة الداخلية الثابتة للباطل () { /** ، فقط الوصول إلى متغيرات الأعضاء الثابتة وطرق الفئة المحيطية* الوصول إلى متغيرات الأعضاء غير الإستاتيكين وطرق الفئة الطرفية* / system.out.println ("اسم OutClass:" + اسم) ؛ }} / *** لا يمكن أن يوجد الأعضاء الثابتون في الفئة الداخلية غير الاستقليوية* / الفئة { /* / * يمكن استدعاء أي عضو في الفئة الطرفية في الفئات الداخلية غير السترات ، سواء كانت ثابتة أو غير استاتيكية */ public void display () {system.out.println ("اسم Outerclass:" + name) ؛ }} /** * mething depheral class peripheral * Author chenssy * data 2013-10-25 * return void * /public void display () { / * peripheral class تصل إلى الفئة الداخلية الثابتة: الفئة الداخلية. */ system.out.println (innerclass1._name1) ؛ /* يمكن إنشاء فئة داخلية ثابتة مباشرة دون الاعتماد على الفئات المحيطية*/ new InnerClass1 (). Display () ؛ /* يحتاج الخلق الداخلي غير الاصطناعي إلى الاعتماد على الطبقات الطرفية*/ OUTERCLASS.INNERCLASS2 Inner2 = new Outerclass (). innerclass2 () جديد ؛ /* يحتاج أعضاء الفئة الداخلية غير الستراتية إلى استخدام مثيلات من الفئة الداخلية غير الستاطية*/ system.out.println (inner2._name2) ؛ inner2.display () ؛ } public static void main (string [] args) {OuterClass Outer = new Outerclass () ؛ Outer.display () ؛ }}لخص
ما سبق هو ملخص لميزات Java الرئيسية الثلاثة - المعرفة المغلفة التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!