JavaRush /مدونة جافا /Random-AR /طرق في جافا
articles
مستوى

طرق في جافا

نشرت في المجموعة
الأساليب في جافا - 1في Java، يتكون التطبيق من فئات. الطبقات، بدورها، تتكون من المتغيرات. إنهم مسؤولون عن تخزين البيانات والأساليب المسؤولة عن سلوك الفصل: بمعنى آخر، المنطق الذي يمكن أن يوفره (على سبيل المثال، معالجة بعض البيانات، واستدعاء أساليب أخرى، وما إلى ذلك). يمكننا أن نتحدث عن هذه المكونات كمتغيرات لفترة طويلة، ولكن ليس هذا هو سبب اجتماعنا اليوم. دعونا نتحدث بشكل أفضل عن هذا المكون من الفصل كطريقة. الأساليب في جافا - 2الطريقة عبارة عن كتلة مسماة من التعليمات البرمجية المعلنة داخل الفصل الدراسي. يحتوي على تسلسل كامل معين من الإجراءات (التعليمات) التي تهدف إلى حل مشكلة منفصلة يمكن إعادة استخدامها. بمعنى آخر، الطريقة هي وظيفة: شيء يمكن لفصلك القيام به. اللغات الأخرى لها وظائف أيضًا. فقط في Java هم أعضاء في الفئات، ووفقًا لمصطلحات OOP، يُطلق عليهم اسم الأساليب. ولكن قبل أن نواصل، دعونا نلقي نظرة على مثال صغير:
public String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
  return resultSentence;
}
لا يوجد شيء معقد هنا: طريقة Java تتمثل مهمتها في إنشاء سلسلة تحية بالاسم الذي نمررها إليه. على سبيل المثال - Hello world! My name is Bobby دعونا نفهم بناء الطريقة بشكل صحيح من خلال النظر إلى كل كلمة رئيسية في إعلان الطريقة (من اليسار إلى اليمين). الكلمة الرئيسية الأولى لدينا هي public، وهي تشير إلى مُعدِّل الوصول:

معدّلات الوصول

وهي تشير إلى نطاق الرؤية المسموح به لأعضاء الفصل، أي تقييد الأماكن التي يُسمح فيها باستخدام متغير أو طريقة. الأساليب في جافا - 3يتم استخدام معدّلات الوصول التالية في Java:
  • عام : عام . الأساليب أو الحقول التي تحتوي على هذا المُعدِّل تكون عامة ومرئية للفئات الأخرى (أو بالأحرى أساليبها وحقولها) من الحزمة الحالية ومن الحزم الخارجية. هذا هو أوسع مستوى وصول معروف؛

  • محمي : يمكن الوصول إلى الأساليب أو المتغيرات مع هذا المعدل من أي مكان في الفئة أو الحزمة الحالية، أو في الفئات التي ترث هذه، وكذلك الأساليب أو الحقول، حتى لو كانت في حزم أخرى

    protected String constructHelloSentence(String name) {...}
  • المعدل الافتراضي إذا لم يكن حقل أو أسلوب فئة يحتوي على معدل، فسيتم تطبيق المعدل الافتراضي. في هذه الحالة، تكون الحقول أو الأساليب مرئية لجميع الفئات في الحزمة الحالية (مثل protected ، ولكن بدون رؤية عند الوراثة).

    String constructHelloSentence(String name) {...}
  • خاص : عكس المعدل العام . الطريقة أو المتغير الذي يحتوي على مثل هذا المعدل متاح فقط في الفئة التي تم الإعلان عنها.

    private String constructHelloSentence(String name) {...}
بعد ذلك لدينا Stringتوقيع الطريقة (السطر الأول من الطريقة الذي يصف خصائصها).

قيمة الإرجاع

القيمة المرجعة هي البيانات (بعض نتائج تنفيذ الطريقة) التي تأتي في مكانها بعد الاستدعاء. كل طريقة لها قيمة إرجاع. أم لا؟

طرق قيمة الإرجاع

يمكن أن تكون هذه القيمة أي نوع من البيانات: متغير من نوع بسيط أو نوع مرجعي. في هذا المثال، نشير إلى أن الطريقة يجب أن تُرجع كائنًا من النوع String، وهو، كما نتذكر، فئة تصف سلسلة. النقطة الثانية هنا هي الكلمة return. لها علاقة مباشرة بالقيمة المرجعة: سيتم إرسال القيمة بعد ذلك إلى المكان الذي تم استدعاء الطريقة فيه، ثم سيتم returnإغلاق الطريقة نفسها. تظهر هذه الكلمة عادةً في السطر الأخير من الطريقة (باستثناء الطرق ذات الفروع المختلفة مثل if, else...). إذا كتبت الكود في السطر التالي بعد return:
private String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  return resultSentence;
  System.out.println(resultSentence);
}
ثم سنحصل على لعنات من المترجم، وهي ليست جيدة جدًا (لن يوصي المترجم بالهراء). عليك أيضًا أن تتذكر أن نوع البيانات التالي сيجب أن يتطابق مع النوع المعلن في توقيع الطريقة. returnاقرأ المزيد عن هنا .

فارغ

ما هو استخدامه voidفي جافا؟ ليست كل الطرق لها قيمة إرجاع. البعض إما ليس لديهم أي شيء أو لا يحتاجون إلى إعادة أي شيء. ماذا تفعل بعد ذلك؟ ثم في توقيع الطريقة نكتب void. كيف ستبدو طريقتنا بدون قيمة الإرجاع؟
protected void constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
}
ربما لاحظت أنه مع القيمة المرجعة، returnاختفت الكلمة So it، لأن طريقتنا لا ينبغي أن تُرجع أي شيء. ومع ذلك، يمكن وضعها هنا، ولكن دون أي معنى، فقط return؛ في السطر الأخير. هذا غير مفيد بشكل عام، لذا voidفهو اختياري في الطرق ذات. ومع ذلك، يمكن استخدامه بشكل مفيد في voidالأساليب، مثل الفروع أو الحلقات، حيث تريد الخروج من الطريقة على الفور. التالي في إعلان الطريقة كان لدينا constructHelloSentence.

أسماء الطريقة

constructHelloSentence - اسم الطريقة، وهي سمة مميزة يمكننا من خلالها التمييز بين طريقة أو أخرى. وبناء على ذلك، اتصل بهذه الطريقة أو تلك. الأساليب في جافا - 4يجب أن تبدأ أسماء الطرق بحرف صغير، ولكن يجب أيضًا استخدام حالة الجمل (CamelCase، حالة الجمل): أي. كل كلمة تالية في الاسم مجاورة للكلمة السابقة ومكتوبة بحرف كبير. يجب أن تصف أسماء الطرق الطريقة (أفضل تعليق هو التسمية الصحيحة). للقيام بذلك، استخدم الأفعال أو مجموعات من الأفعال: getCat, delete, createCar, وما إلى ذلك. ضمن فئة واحدة، يجب أن تكون أسماء الطرق فريدة من نوعها (دون احتساب التحميل الزائد للطرق، والذي سنتحدث عنه لاحقًا). دعونا نلقي نظرة أبعد على الطريقة التي نحللها ونرى ( String name)

معلمات الطريقة

قد تحتوي الطرق (أو لا تحتوي) على بيانات معينة ستأتي من الخارج، أي من المكان الذي تم استدعاء الطريقة فيه. في حالتنا، نرى أن كائن كتابة Stringيحمل اسمًا يصل nameوبعد ذلك نستخدم هذا المتغير في طريقتنا. يمكنك استخدام عدد غير محدود من المعلمات في الطريقة، ولكن لا يوصى باستخدام أكثر من 7. عندما لا نعرف العدد الدقيق للعناصر، ولكن كل هذه العناصر مطلوبة لنفس الغرض وستكون من نفس النوع (على سبيل المثال، String)، يتم استخدام علامة الحذف:
public void constructHelloSentence(String...name) {
 ...
}
سيكون جاذبية كل عنصر على النحو التالي: name[0] هل يذكرك بأي شيء؟ هذا صحيح، مجموعة! لن يتغير شيء إذا كتبنا:
protected void constructHelloSentence(String[] name) {
 ...
}
سيكون الوصول إلى العناصر أيضًا على شكل: name[1] وشيء آخر. يمكن أن تكون وسيطات الطريقة نهائية :
public String constructHelloSentence(final String name) {
  ...
}
وهذا يعني أن مرجع الاسم مرتبط بكائن معين Stringولا يمكن تجاوزه. finalيمكنك أن تقرأ عن العمل مع المتغيرات المرجعية وتفاعلها مع الكلمات المحجوزة في المادة " أنواع البيانات المرجعية في Java ".

طرق الدعوة

لذلك، قمنا بتفكيك إنشاء الأساليب، والآن دعونا نتحدث عن استخدامها. كيفية استدعاء طريقة في جافا؟ الأساليب في جافا - 5كل طريقة في Java موجودة في فصل دراسي. لفهم كيفية عمل أساليب الاتصال في Java، فلنأخذ فصلًا دراسيًا:
public class StringConstructor {
  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
بما أن طريقتنا ليست ثابتة (هذا موضوع منفصل للمناقشة ويتجاوز نطاق مقال اليوم)، لتسميتها يجب عليك أولاً إنشاء كائن ثم استدعاء الطريقة عليه:
class Application{
  public static void main(String[] args) {
     StringConstructor stringConstructor = new StringConstructor();
     stringConstructor.constructHelloSentence("Den");
  }
}
في وسيطات طريقتنا، مررنا السلسلة (الاسم) التي نريد رؤيتها في السلسلة الناتجة المعروضة على الشاشة:

Hello world! My name is Den
ومن الجدير بالذكر أيضًا أنه يمكن إعادة استخدام الأساليب عدة مرات حسب حاجتنا - ولا توجد قيود.

هذا

يمكنك غالبًا رؤية الكلمة الأساسية في الكود this، كما هو الحال في أدوات الضبط:
public void setValue(Long value) {
   this.value = value;
}
وماذا يعني ذلك؟ thisفي Java، هذا إشارة إلى الكائن الحالي لهذه الفئة. على سبيل المثال، إذا أنشأنا كائنًا:
StringConstructor stringConstructor = new StringConstructor();
ثم thisداخل الكائن stringConstructorسيكون هناك رابط لنفس الكائن. thisيُستخدم للإشارة إلى متغير كائن (كما في أداة الضبط أعلاه) ولاستدعاء طريقة ما. يمكننا إعادة كتابة صفنا قليلاً:
public class StringConstructor {

  public String constructHelloSentence(String name) {
     String resultSentence = this.getSentence()  + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  private String getSentence() {
     return "Hello world! My name is ";
  }
}
من خلال thisاستدعاء طريقة هذا الكائن لأخذ السلسلة المطلوبة. ولكن لا يزال، كقاعدة عامة، لا يتم استخدام هذا تقريبًا للطرق، لأنه حتى بدونه هناك إشارة إلى طريقة كائن معين، فهو يستخدم بشكل أساسي لمتغير الكائن.

طريقة التحميل الزائد

لنفترض أننا بحاجة إلى طريقة تؤدي بشكل أساسي نفس المنطق، ولكن في Hello world! بدلاً من ذلك worldنريد إدراج كلمتنا (سلسلة). ولكن لدينا بالفعل طريقة constructHelloSentence. فهل نحن بحاجة إلى التوصل إلى اسم جديد للطريقة التي تؤدي نفس الوظيفة بشكل أساسي؟ بغض النظر عن كيفية حدوث ذلك: في هذه اللحظة، تأتي طريقة التحميل الزائد لمساعدتنا. الأساليب في جافا - 7التحميل الزائد للأسلوب هو استخدام نفس اسم الأسلوب أكثر من مرة عند الإعلان عنه في الفصل الدراسي. من وجهة نظر بناء الجملة اللغوية، لا يمكن أن يكون هناك اسمين متطابقين في بعض المساحة المحلية. ولكن من الممكن أيضًا الإعلان عن طرق بنفس الأسماء ولكن مع وسائط مختلفة. بمعنى آخر، يحتوي الفصل على التحميل الزائد عندما يكون هناك طريقتان أو أكثر بنفس الأسماء ولكن بيانات الإدخال مختلفة:
public class Constructor {

  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  protected String constructHelloSentence(String firstName, String secondName) {
     String resultSentence = "Hello " + firstName + "! My name is " + secondName;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
نرى هنا أن الأساليب لا يجب أن تحتوي على نفس معدل الوصول (بالإضافة إلى نوع الإرجاع). إذا تم استدعاء طريقة مثقلة، فمن بين العديد من الطرق المعلنة، يحدد المترجم تلقائيًا الطريقة المطلوبة بناءً على المعلمات المحددة أثناء المكالمة.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION