logo

قابل للتغيير وغير قابل للتغيير في جافا

Java هي لغة برمجة كائنية التوجه. نظرًا لأنها لغة برمجة موجهة للكائنات، فإن جميع أساليبها وآلياتها تدور حول الكائنات. أحد المفاهيم المستندة إلى الكائنات قابل للتغيير و غير قابل للتغيير في جافا . الكائنات في Java إما قابلة للتغيير أو غير قابلة للتغيير؛ يعتمد ذلك على كيفية تكرار الكائن.

في هذا القسم، سنناقش الكائنات القابلة للتغيير والكائنات غير القابلة للتغيير في Java. وعلاوة على ذلك، سوف نرى الفرق بينهما.

ما هي الكائنات القابلة للتغيير

الكائنات القابلة للتغيير هي كائنات يمكن تغيير قيمتها بعد التهيئة. يمكننا تغيير قيم الكائن، مثل الحقل والحالات، بعد إنشاء الكائن. على سبيل المثال، java.util.Date , StringBuilder , StringBuffer ، إلخ.

عندما نقوم بإجراء تغيير في الكائنات الموجودة القابلة للتغيير، لن يتم إنشاء كائن جديد؛ بدلاً من ذلك، فإنه سيتم تغيير قيمة الكائن الموجود. توفر فئات هذه الكائنات طرقًا لإجراء تغييرات عليها.

تتوفر طرق Getters وSetters ( get() و set() ) في كائنات قابلة للتغيير. قد يكون الكائن القابل للتغيير آمنًا أو لا يكون آمنًا.

رمي رميات في جافا

ما هي الكائنات غير القابلة للتغيير

الكائنات غير القابلة للتغيير هي كائنات لا يمكن تغيير قيمتها بعد التهيئة. لا يمكننا تغيير أي شيء بمجرد إنشاء الكائن. على سبيل المثال، كائنات بدائية مثل إنت، طويل , يطفو , مزدوج , جميع الفئات التراثية، الطبقة المجمعة , فئة السلسلة ، إلخ.

باختصار، غير قابل للتغيير يعني غير معدل أو غير قابل للتغيير. بمجرد إنشاء الكائنات غير القابلة للتغيير، لا يمكن تغيير قيم الكائنات وحالتها.

فقط Getters (طريقة get()) متاحة وليس Setters (طريقة set()) للكائنات غير القابلة للتغيير.

سلسلة جافا cmp

دعونا نرى كيفية إنشاء فئات للكائنات القابلة للتغيير وغير القابلة للتغيير.

كيفية إنشاء فئة قابلة للتغيير

الأمران التاليان ضروريان لإنشاء فئة قابلة للتغيير:

  • طرق تعديل قيم الحقول
  • Getters وSetters من الكائنات

خذ بعين الاعتبار المثال أدناه للفئة القابلة للتغيير:

 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

انتاج:

 JavaTpoint Java Training 

من المثال أعلاه، نقوم بتغيير قيمة الاسم باستخدام طريقة setName.

كيفية إنشاء فئة غير قابلة للتغيير

الأشياء التالية ضرورية لإنشاء فئة غير قابلة للتغيير:

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

خذ بعين الاعتبار المثال أدناه:

ملف .tif
 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

انتاج:

 Core Java Training 

ومن ثم، فقد ناقشنا الأشياء والفئات القابلة للتغيير وغير القابلة للتغيير. دعونا نناقش الاختلافات بينهما:

الفرق بين الكائنات القابلة للتغيير والأشياء غير القابلة للتغيير

فيما يلي بعض الاختلافات الرئيسية بين الكائنات القابلة للتغيير وغير القابلة للتغيير في جافا :

  • يمكن تغيير الكائنات القابلة للتغيير إلى أي قيمة أو حالة دون إضافة كائن جديد. حيث أن الكائنات غير القابلة للتغيير لا يمكن تغيير قيمتها أو حالتها بمجرد إنشائها. في حالة الكائنات غير القابلة للتغيير، كلما قمنا بتغيير حالة الكائن، سيتم إنشاء كائن جديد.
  • توفر الكائنات القابلة للتغيير طريقة لتغيير محتوى الكائن. نسبيًا، لا توفر الكائنات غير القابلة للتغيير أي طريقة لتغيير القيم.
  • تدعم الكائنات القابلة للتغيير كلا من أدوات الضبط والحروف. نسبيًا، تدعم الكائنات غير القابلة للتغيير أدوات الضبط فقط، وليس الحروف.
  • الكائنات القابلة للتغيير قد تكون أو لا تكون آمنة لمؤشر الترابط، ولكن الكائنات غير القابلة للتغيير تكون آمنة لمؤشر الترابط بشكل افتراضي.
  • أمثلة الفئات القابلة للتغيير هي StringBuffer، وJava.util.Date، وStringBuilder، وما إلى ذلك. في حين أن الكائنات غير القابلة للتغيير هي فئات قديمة، وفئات مجمعة، وفئة سلسلة، وما إلى ذلك.

النظر في الجدول أدناه:

متقلب غير قابل للتغيير
يمكننا تغيير قيمة الكائنات القابلة للتغيير بعد التهيئة. بمجرد بدء كائن غير قابل للتغيير؛ لا يمكننا تغيير قيمها.
يمكن تغيير الدولة. لا يمكن تغيير الدولة.
في الكائنات القابلة للتغيير، لا يتم تشكيل كائنات جديدة. في الكائنات غير القابلة للتغيير، يتم تشكيل كائن جديد عندما يتم تغيير قيمة الكائن.
ويوفر طرقًا لتغيير الكائن. ولا يوفر أي طريقة لتغيير قيمة الكائن.
وهو يدعم أساليب get() و set() للتعامل مع الكائن. إنه يدعم فقط طريقة get() لتمرير قيمة الكائن.
قد تكون الفئات القابلة للتغيير آمنة أو غير آمنة لمؤشر الترابط. الفئات غير القابلة للتغيير آمنة لمؤشر الترابط.
الأساسيات لإنشاء فئة قابلة للتغيير هي طرق تعديل الحقول والحروف والمحددات. الأساسيات لإنشاء فئة غير قابلة للتغيير هي الفئة النهائية، والحقول الخاصة، والكائنات النهائية القابلة للتغيير.

لماذا السلاسل في Java غير قابلة للتغيير

تعتبر String in Java فئة خاصة جدًا، حيث يتم استخدامها تقريبًا في كل برامج Java. ولهذا السبب من غير القابل للتغيير تحسين الأداء والأمان. دعونا نفهم ذلك بالتفصيل:

في Java، تستخدم السلاسل مفهوم القيم الحرفية. لنفترض أن لدينا كائنًا يحتوي على العديد من المتغيرات المرجعية. في مثل هذا السيناريو، إذا قمنا بتغيير قيمة متغير مرجعي، فسوف يؤثر ذلك على الكائن بأكمله وجميع قيمه.

وبصرف النظر عن الأسباب المذكورة أعلاه، فإن الأسباب التالية مسؤولة أيضًا عن جعل السلسلة غير قابلة للتغيير:

الكائنات غير القابلة للتغيير بسيطة جدًا؛ ليست هناك حاجة للمزامنة وهي آمنة بطبيعتها. لكن الكائنات غير القابلة للتغيير تشكل وحدات بناء جيدة لكائنات أخرى، لذلك يتعين علينا أن نقدم لها رعاية خاصة.

معظم المطورين يجعلون السلسلة هي الكائن النهائي بحيث لا يمكن تغييرها لاحقًا.

الممثلة الهندية راني موخرجي

خاتمة

لقد ناقشنا الكائنات القابلة للتغيير وغير القابلة للتغيير في Java، والآن لدينا فهم واضح لكل من الكائنات والفئات القابلة للتغيير وغير القابلة للتغيير. علاوة على ذلك، لقد رأينا كيفية إنشاء فئة قابلة للتغيير وغير قابلة للتغيير.

تجدر الإشارة إلى أنه يمكن تغيير الكائنات غير القابلة للتغيير إلى قيمتها وحالتها بمجرد بدئها وقد تكون أو لا تكون آمنة لمؤشر الترابط. نسبيًا، لا يمكن تغيير الكائنات غير القابلة للتغيير إلى حالتها وقيمتها ومؤشر الترابط الافتراضي الآمن.