دروس جافا

جافا هوم جافا مقدمة ابدأ جافا بناء جملة جافا تعليقات جافا متغيرات جافا أنواع بيانات جافا جافا نوع الصب مشغلي جافا سلاسل جافا جافا الرياضيات جافا المنطقية جافا إذا ... آخر تبديل جافا جافا أثناء التكرار جافا للحلقة جافا بريك / متابعة جافا المصفوفات

طرق جافا

طرق جافا معلمات طريقة جافا طريقة جافا التحميل الزائد نطاق جافا العودية جافا

فئات جافا

جافا OOP فئات / كائنات جافا سمات فئة Java طرق فئة جافا منشئو جافا معدِّلات جافا تغليف جافا حزم جافا / API الوراثة جافا جافا تعدد الأشكال فئات جافا الداخلية جافا التجريد واجهة جافا جافا Enums مدخلات مستخدم جافا تاريخ جافا جافا ArrayList جافا لينكدليست جافا HashMap جافا هاشسيت جافا التكرار فئات Java Wrapper استثناءات Java جافا RegEx خيوط جافا جافا لامدا

معالجة ملفات جافا

ملفات جافا جافا إنشاء / كتابة الملفات ملفات قراءة جافا جافا حذف الملفات

جافا كيف

أضف عددين

مرجع جافا

كلمات جافا طرق سلسلة جافا طرق جافا للرياضيات

أمثلة جافا

أمثلة جافا مترجم جافا تمارين جافا مسابقة جافا شهادة جافا


تغليف جافا


التغليف

معنى التغليف هو التأكد من إخفاء البيانات "الحساسة" عن المستخدمين. لتحقيق ذلك ، يجب عليك:

  • إعلان متغيرات الفئة / السمات كـ private
  • توفير طرق الحصول العامة وتعيينها للوصول إلى قيمة private المتغير وتحديثها

احصل على وتعيين

لقد تعلمت من الفصل السابق أنه privateلا يمكن الوصول إلى المتغيرات إلا داخل نفس الفصل (لا يمكن للفصل الخارجي الوصول إليه). ومع ذلك ، من الممكن الوصول إليها إذا قدمنا طرقًا عامة للحصول عليها وتعيينها .

تقوم getالطريقة بإرجاع القيمة المتغيرة ، وتقوم setالطريقة بتعيين القيمة.

بناء الجملة لكليهما هو أنهما يبدأان بأي منهما getأو setمتبوعًا باسم المتغير ، بالحرف الأول في الحالة الكبيرة:

مثال

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

شرح المثال

الطريقة ترجع getقيمة المتغير name.

setتأخذ الطريقة المعلمة ( ) newNameوتخصصها nameللمتغير. يتم thisاستخدام الكلمة الأساسية للإشارة إلى الكائن الحالي.

ومع ذلك ، حيث nameتم التصريح عن المتغير كـ private، لا يمكننا الوصول إليه من خارج هذه الفئة:

مثال

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

إذا تم التصريح عن المتغير كـ public، فإننا نتوقع المخرجات التالية:

John

ومع ذلك ، عندما نحاول الوصول إلى privateمتغير ، حصلنا على خطأ:

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

بدلاً من ذلك ، نستخدم التابعين getName()and setName()للوصول إلى المتغير وتحديثه:

مثال

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"


لماذا التغليف؟

  • تحكم أفضل في سمات وطرق الطبقة
  • يمكن جعل سمات الفئة للقراءة فقط (إذا كنت تستخدم getالطريقة فقط) ، أو للكتابة فقط (إذا كنت تستخدم setالطريقة فقط)
  • مرن: يمكن للمبرمج تغيير جزء واحد من الكود دون التأثير على الأجزاء الأخرى
  • زيادة أمن البيانات