मैं php दुनिया से हूँ। क्या आप समझा सकते हैं कि गेटर्स और सेटर क्या हैं और आपको कुछ उदाहरण दे सकते हैं?
मैं php दुनिया से हूँ। क्या आप समझा सकते हैं कि गेटर्स और सेटर क्या हैं और आपको कुछ उदाहरण दे सकते हैं?
जवाबों:
इसके लिए ट्यूटोरियल की आवश्यकता नहीं है। एनकैप्सुलेशन पर पढ़ें
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;
}
someObj.getTime().setHour(5)
कि यह someObj
आंतरिक स्थिति को प्रभावित नहीं करना चाहिए । इसके अलावा बसने वाले और पाने वाले (अपने कट्टर नाम से एक्सेसर्स और म्यूटेटर) एक बहुत ही सख्त विधि हस्ताक्षर का अर्थ है कि गेट्टर का कोई पैरामीटर नहीं है। सामान्य तौर पर तरीके केवल एक ही काम करना चाहिए।
this
कीवर्ड वैकल्पिक है जब तक कि किसी ऐसी चीज के साथ संघर्ष न हो जिसमें अधिक विशिष्ट गुंजाइश हो। आपके द्वारा दिए गए उदाहरण में, जो सेटर बनाया गया है, उसमें एक एकल पैरामीटर होगा जिसका नाम फ़ील्ड नाम से मेल खाता है, इसलिए this.fieldName = fieldName
, यह अंतर करने के लिए उपयोग किया जाता है कि फ़ील्ड को असाइन किया जा रहा है पैरामीटर के बजाय इसके स्व को सौंपा जा रहा है fieldName = fieldname
। गटर में ऐसा कोई संघर्ष मौजूद नहीं है।
जावा में गेटर्स और सेटर पूरी तरह से साधारण कार्य हैं। केवल एक चीज जो उन्हें गेटर्स या सेटर बनाती है वह है कन्वेंशन। Foo के लिए एक गेटटर को getFoo कहा जाता है और सेटर को setFoo कहा जाता है। एक बूलियन के मामले में, गेट्टर को फुफू कहा जाता है। उनके पास एक विशिष्ट घोषणा भी होनी चाहिए जैसा कि 'नाम' के लिए एक गेट्टर और सेटर के इस उदाहरण में दिखाया गया है:
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;
}
}
अपने सदस्यों को सार्वजनिक करने के बजाय गेटर्स और सेटर का उपयोग करने का कारण यह है कि यह इंटरफ़ेस को बदले बिना कार्यान्वयन को बदलना संभव बनाता है। इसके अलावा, कई उपकरण और टूलकिट जो वस्तुओं का परीक्षण करने के लिए प्रतिबिंब का उपयोग करते हैं, केवल उन वस्तुओं को स्वीकार करते हैं जिनमें गेटर्स और सेटर हैं। उदाहरण के लिए जावाबीन में गेटर्स और सेटर और कुछ अन्य आवश्यकताएं होनी चाहिए।
error: invalid method declaration; return type required
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);
}
}
जब आप प्रोग्राम चलाते हैं, तो प्रोग्राम मेन में शुरू होता है,
setTime()
को ऑब्जेक्ट c से पुकारा जाता हैtime
को पास से मान पर सेट किया गया हैgetTime()
को ऑब्जेक्ट c से पुकारा जाता हैtod
और tod
प्रिंट आउट प्राप्त करेगाआप यह भी पढ़ सकते हैं कि " क्यों गटर और सेटर विधियां बुराई हैं ":
यद्यपि जावा में गेटटर / सेटर विधियां आम हैं, वे विशेष रूप से ऑब्जेक्ट ओरिएंटेड (OO) नहीं हैं। वास्तव में, वे आपके कोड की स्थिरता को नुकसान पहुंचा सकते हैं। इसके अलावा, कई गेट्टर और सेटर विधियों की उपस्थिति एक लाल झंडा है जो कि प्रोग्राम को एक ओओ के नजरिए से अच्छी तरह से डिज़ाइन नहीं किया गया है।
यह आलेख बताता है कि आपको गेटर्स और सेटर्स का उपयोग क्यों नहीं करना चाहिए (और जब आप उनका उपयोग कर सकते हैं) और एक डिज़ाइन कार्यप्रणाली का सुझाव देता है जो आपको गेटटर / सेटर मानसिकता से बाहर निकलने में मदद करेगा।
यहाँ मोज़िला से एक जावास्क्रिप्ट उदाहरण दिया गया है:
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)
मैंने इन A LOT का उपयोग किया है क्योंकि वे कमाल के हैं । अपने कोडिंग + एनीमेशन के साथ फैंसी मिलने पर मैं इसका उपयोग करूंगा। उदाहरण के लिए, एक ऐसा सेटर बनाएं Number
जो आपके वेबपेज पर उस नंबर को प्रदर्शित करता है। जब सेटर का उपयोग किया जाता है तो यह पुराने नंबर को ट्वीटर का उपयोग करके नए नंबर पर ले जाता है । यदि प्रारंभिक संख्या 0 है और आप इसे 10 पर सेट करते हैं, तो आप संख्याओं को 0 से 10 ओवर तक जल्दी से फ्लिप करते दिखेंगे, मान लीजिए, आधा सेकंड। उपयोगकर्ता इस सामान को पसंद करते हैं और इसे बनाने में मज़ा आता है।
सोफ से उदाहरण
<?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;
}
}
?>
citings:
जावा में गेट्टर और सेटर का उपयोग करने का सबसे सरल तरीका समझाने के लिए यहां एक उदाहरण दिया गया है। यह एक और अधिक सरल तरीके से कर सकता है लेकिन गेटटर और सेटर में कुछ खास है जो कि वंशानुक्रम में बच्चे की कक्षा में अभिभावक वर्ग के निजी सदस्य का उपयोग करते समय होता है। आप गटर और सेटर का उपयोग करके इसे संभव बना सकते हैं।
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();
}
}