سؤال

أنا من عالم PHP. هل يمكن أن تفسر ما هي Getters و Setters ويمكن أن يوفر لك بعض الأمثلة؟

هل كانت مفيدة؟

المحلول

البرنامج التعليمي مطلوب حقا لهذا. تقرأ على التغليف

private String myField; //"private" means access to this is restricted

public String getMyField()
{
     //include validation, logic, logging or whatever you like here
    return this.myField;
}
public void setMyField(String value)
{
     //include more logic
     this.myField = value;
}

نصائح أخرى

في Java Jetters و Setters هي وظائف عادية تماما. الشيء الوحيد الذي يجعلهم يحتجزون أو خواصين هو الاتفاقية. يسمى Getter for Foo GetFoo و STERTER يسمى SetFoo. في حالة منطقي، يسمى Getter Isfoo. يجب أن يكون لديهم أيضا إعلان محدد كما هو موضح في هذا المثال ل ATERER و STERTER من أجل "الاسم":

class Dummy
{
    private String name;

    public Dummy() {}

    public Dummy(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

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

السبب في استخدام Getters و Setters بدلا من جعل أعضائكم الجمهور هو أنه يجعل من الممكن تغيير التنفيذ دون تغيير الواجهة. أيضا، العديد من الأدوات والأدوات التي تستخدم الانعكاس لفحص الكائنات تقبل فقط الكائنات التي تحتوي على getters و setters. javabeans. على سبيل المثال يجب أن يكون لديك getters و sensters وكذلك بعض المتطلبات الأخرى.

class Clock {  
        String time;  

        void setTime (String t) {  
           time = t;  
        }  

        String getTime() {  
           return time;  
        }  
}  


class ClockTestDrive {  
   public static void main (String [] args) {  
   Clock c = new Clock;  

   c.setTime("12345")  
   String tod = c.getTime();  
   System.out.println(time: " + tod);  
 }
}  

عند تشغيل البرنامج، يبدأ البرنامج في Mains،

  1. يتم إنشاء كائن C
  2. وظيفة setTime() يطلق عليه الكائن ج
  3. المتغير time يتم تعيين إلى القيمة التي تم تمريرها
  4. وظيفة getTime() يطلق عليه كائن ج
  5. يتم إرجاع الوقت
  6. سوف passe إلى tod و tod الحصول على المطبوعة خارج

قد ترغب أيضا في قراءة "لماذا الأساليب Getter و Seadter شريرة":

على الرغم من أن طرق Getter / Studter شائعة في Java، فهي ليست موجهة نحو الكائنات بشكل خاص (OO). في الواقع، يمكنهم إتلاف إمكانية صرف الكود الخاص بك. علاوة على ذلك، فإن وجود العديد من أساليب Getter و Setter هو علم أحمر أن البرنامج ليس بالضرورة مصممة بشكل جيد من وجهة نظر OO.

تشرح هذه المقالة لماذا يجب ألا تستخدم Getters و Setters (وعندما يمكنك استخدامها) ويقترح منهجية التصميم التي ستساعدك على الخروج من عقلية Getter / Stedter.

1. أفضل getters / setsters ذكية.

إليك مثال جافا سكريبت من Mozilla:

var o = { a:0 } // `o` is now a basic object

Object.defineProperty(o, "b", { 
    get: function () { 
        return this.a + 1; 
    } 
});

console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)

لقد استخدمت هذه كثيرا لأنها مدهش. وبعد كنت أستخدمه عند الحصول على الهوى مع الرسوم المتحركة الترميز الخاصة بي. على سبيل المثال، قم بإجراء STERTER يتعامل مع Number الذي يعرض هذا الرقم على صفحة الويب الخاصة بك. عند استخدام STERTER، يقوم بتحريك الرقم القديم إلى الرقم الجديد باستخدام توينير. وبعد إذا كان الرقم الأولي هو 0 وتحدده إلى 10، فسترى الأرقام الوجه بسرعة من 0 إلى 10، دعنا نقول، نصف ثانية. يحب المستخدمون هذه الأشياء ومن المرح أن يخلق.

2. getters / setters في php

مثال من SOF.

<?php
class MyClass {
  private $firstField;
  private $secondField;

  public function __get($property) {
    if (property_exists($this, $property)) {
      return $this->$property;
    }
  }

  public function __set($property, $value) {
    if (property_exists($this, $property)) {
      $this->$property = $value;
    }

    return $this;
  }
}
?>

القلق

فيما يلي مثال لشرح الطريقة الأكثر بساطة لاستخدام Getter و Setter في Java. يمكن للمرء القيام بذلك بطريقة أكثر وضوحا، لكن Getter و Setter لديه شيء خاص هو عند استخدام العضو الخاص في فئة الوالدين في فئة الطفل في الميراث. يمكنك جعل ذلك ممكنا من خلال استخدام getter و sedter.

package stackoverflow;

    public class StackoverFlow 

    {

        private int x;

        public int getX()
        {
            return x;
        }

        public int setX(int x)
        {
          return  this.x = x;
        }
         public void showX()
         {
             System.out.println("value of x  "+x);
         }


        public static void main(String[] args) {

            StackoverFlow sto = new StackoverFlow();
            sto.setX(10);
            sto.getX();
            sto.showX();
        }

    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top