للتمييز بين هذين الأخوين ، أولاً وقبل كل شيء ، علينا أن نعرف ما هي. أولا ، خذ متغير العضو.
متغيرات الأعضاء
دعونا ندرس شيئًا:
السمات: الخصائص الخارجية ؛ مثل الطول البشري والوزن
السلوك: ماذا يمكنك أن تفعل ؛ على سبيل المثال ، لدى الأشخاص سلوكيات مثل التحدث ولعب كرة السلة وما إلى ذلك.
في لغة Java ، الوحدة الأساسية هي فئة ، وتستخدم الفصول لتعكس الأشياء.
وينطبق الشيء نفسه على وصف الأشياء مع فصول الفصل:
السمة: متغيرات الأعضاء في الفئة المقابلة
السلوك: وظائف الأعضاء في الفصل المقابل
تحديد الفصل هو في الواقع عضو (متغيرات الأعضاء ووظائف الأعضاء) في الفصل
التوسع: الفصل هو مفهوم مجردة ، والكائن هو الوجود الملموس وتجسيد الفئة. على سبيل المثال: يمكن اعتبار السيارة في الحياة فئة ، والتي نسميها فئة السيارة. كل سيارة لها لون ورقم إطار (يمكن تعريفه على أنه سمة ، أي متغير الأعضاء) ، ويمكن أن يتم تشغيل كل سيارة (أي سلوك السيارة ، المقابل لوظيفة العضو الكلي للفئة). إذا قمنا بتسوية السيارة ، فسوف ننتج كائنًا ، مثل مرسيدس بنز و BMW (BMW).
DEMO1:
Class Class Car {Private String Color ؛ // تحديد لون السيارة ، المتغير العالمي int numluntai ؛ // تحديد رقم إطار السيارة ، السيارة العامة المتغيرة العالمية (لون السلسلة ، int numluntai) {super () ؛ this.color = اللون ؛ this.numluntai = numluntai ؛ } public void run () {system.out.println (this.numluntai + "wheels" + this.color + "السيارة تقود على الطريق") ؛ }} الفئة العامة ClasStest {public static void main (string [] args) {car bmw = new car ("Black" ، 4) ؛ // إنشاء كائن سيدان باسم BMW BMW.RUN () ؛ }}نتائج التشغيل:
سيارة سيدان سوداء مع 4 عجلات تقود على الطريق
من بينها ، يسمى Color و Numluntai متغيرات الأعضاء في فئة السيارة. يمكن استخدام هذه الخاصية لوصف خصائص الفصل. خلاف ذلك ، يجب تعريفه على أنه متغير محلي.
على سبيل المثال ، أنا في حلقة هو متغير محلي.
لـ (int i = 0 ؛ i <args.length ؛ i ++) {
......
}
على سبيل المثال ، يتم كتابة متغير في طريقة عضو كمتغير محلي.
PublicClass Car {Private String Color ؛ // تحديد لون السيارة ، المتغير العالمي int numluntai ؛ // تحديد رقم إطار السيارة ، السيارة العامة المتغيرة العالمية (لون السلسلة ، int numluntai) {super () ؛ this.color = اللون ؛ this.numluntai = numluntai ؛ } public void run () {String carname = "BMW" ؛ // هذا هو المتغير المحلي system.out.println (this.numluntai + "عجلات" + this.color + carname + "السيارة تقود على الطريق") ؛ }} publicclass classtest {public static void main (string [] args) {car bmw = new car ("Black" ، 4) ؛ // إنشاء كائن سيدان باسم BMW BMW.RUN () ؛ }}نتيجة:
سيدان BMW السوداء مع 4 عجلات تقود على الطريق
الفرق بين متغيرات الأعضاء والمتغيرات المحلية
متغيرات الأعضاء:
① يتم تعريف متغيرات الأعضاء في الفصل ويمكن الوصول إليها خلال الفصل.
② يتم إنشاء متغيرات الأعضاء مع إنشاء الكائن ، وتختفي مع اختفاء الكائن ، والوجود في ذاكرة الكومة حيث يوجد الكائن.
③ متغيرات الأعضاء لها قيم التهيئة الافتراضية.
المتغيرات المحلية:
① يتم تعريف المتغيرات المحلية فقط في النطاق المحلي ، مثل: ضمن الوظائف ، ضمن العبارات ، وما إلى ذلك ، وهي صالحة فقط في المنطقة التي ينتمون إليها.
② المتغيرات المحلية موجودة في ذاكرة المكدس. عندما ينتهي نطاق وظيفتها ، سيتم إصدار المساحة المتغيرة تلقائيًا.
③ لا تحتوي المتغيرات المحلية على قيم التهيئة الافتراضية
المبادئ التي يجب اتباعها عند استخدام المتغيرات هي: مبدأ القرب
أولاً ، ابحث في النطاق المحلي ، استخدمه إذا كان هناك واحد ؛ ثم ابحث في منصب العضو.
قد أكون مرتبكًا قليلاً عندما أرى هذا. اسمحوا لي أن فرز مثالا أدناه. إذا كنت تفكر في الأمر بعناية ، فهذا أمر بسيط للغاية.
دعنا نلقي نظرة على رمز بسيط أولاً.
أولا قمت بتعريف فصل الشخص.
شخص الطبقة العامة {private int age = 1000 ؛ // تحديد متغيرات الأعضاء ، العمر هو 1000 public void setage (int age) {age = age ؛ System.out.println ("العمر داخل الطريقة"+العمر) ؛ } public void sealhhello () {system.out.println ("عمري هو"+age+".") ؛ }}ثم قم بإنشاء كائن في الوظيفة الرئيسية وإخراجها.
person p = new person () ؛ p.setage (20) ؛ p.sayhello () ؛
ما هي نتيجة الإخراج؟ ليس الأمر أننا تخيلنا أن عمري يبلغ من العمر 20 عامًا ، ولكن ما يلي:
// العمر داخل الطريقة هو 20 // عمري هو 1000.
من السهل في الواقع فهم ما إذا كنت تفكر في الأمر.
في كلمة واحدة ، إذا كانت هناك أسماء مختلفة ، فإن الاسم المتغير في الطريقة يمثل متغير عضو ؛ إذا كان هناك نفس الأسماء ، فإن الاسم المتغير في الطريقة يمثل متغيرًا محليًا فقط ، وليس له علاقة مع متغير العضو.
لذلك ، أولاً ، عندما نقوم بإنشاء كائن شخص p ، تم تهيئة متغير العضو عند إنشاء الكائن. القيمة الأولية لسن عضو العضو هي 1000.
عندما نقوم P.Setage (20) ، يعمل العشرين في الواقع فقط في طريقة الإعداد ، وبالتالي فإن العمر 20 في الطريقة هو الإخراج. بعد تنفيذ هذه الجملة ، يتم تدمير العشرين.
ثم قم بتنفيذ Sayhello ، ويمثل العمر فيه قيمة متغير العضو ، لذلك لا يزال 1000.
إذا كنت لا تزال لا تستطيع فهمها هنا ، فيمكنك كتابة الكود بنفسك لرؤية نتائج الإخراج وتجربته.
لذلك ، عند استخدام نفس الاسم ، نريد أن ندع هذا الاسم المتغير يمثل متغير عضو. هل هناك أي طريقة؟
ثم علينا أن نتحدث عن هذه الكلمة الرئيسية. لقد غيرنا فصل الشخص إلى هذا:
شخص الطبقة العامة {private int Age = 1000 ؛ public void setage (int age) {this.age = age ؛ System.out.println ("العمر داخل الطريقة"+العمر) ؛ } public void sealhhello () {system.out.println ("عمري هو"+age+".") ؛ }}قم بتشغيل الرمز مرة أخرى وابحث عن أن نتيجة تشغيل الكود تصبح ما يلي:
// العمر داخل الطريقة هو 20 // عمري 20.
هذا يمثل الكائن الحالي.
يشير هذا هنا على وجه التحديد إلى أن قيمة عمر كائن P (أي ، عمر المتغير العضو لكائن P) هو 20.
على الرغم من أن جوهر الاثنين متغير ، إلا أن هناك فرقًا كبيرًا عند استخدامه ، وقد تقع في فخ إذا لم تكن حذراً. تذكر أولاً: في فئة ما ، إذا كان يمكن استخدام متغير لوصف خصائص الفصل ، فسيتم تعريفه على أنه متغير عضو ، وإلا ، فيجب تعريفه على أنه متغير محلي. إذا لم تتمكن من الفهم ، فاكتب المزيد من التعليمات البرمجية ويمكنك فهمها.