निर्माता से अधिक भार अनुकरण मूलभूत मूल्यों के लिए बहुत उपयोगी है, या पहले से मौजूद उदाहरण (कॉपी) से एक वस्तु के निर्माण के लिए
यहाँ एक उदाहरण है:
public class Color {
public int R, G, B, A;
// base ctr
public Color(int R, int G, int B, int A) {
this.R = R;
this.G = G;
this.B = B;
this.A = A;
}
// base, default alpha=255 (opaque)
public Color(int R, int G, int B) {
this(R, G, B, 255);
}
// ctr from double values
public Color(double R, double G, double B, double A) {
this((int) (R * 255), (int) (G * 255), (int) (B * 255), (int) (A * 255));
}
// copy ctr
public Color(Color c) {
this(c.R, c.G, c.B, c.A);
}
}
यहाँ, पहले निर्माता बहुत सरल है। आप आर, जी, बी & रंग के लिए अल्फा मान निर्दिष्ट करते हैं।
हालांकि यह रंग वर्ग का उपयोग करने के लिए पर्याप्त है, तो आप एक दूसरे निर्माता, लीटर है, जो ऑटो आवंटित 255 यदि उपयोगकर्ता द्वारा निर्दिष्ट नहीं अल्फा के लिए प्रदान करते हैं।
तीसरा सीआरआर दिखाता है कि आप अपने कलर ऑब्जेक्ट को 0 और 1 के बीच दोहराकर पूर्णांक के बजाय तत्काल कर सकते हैं।
अंतिम व्यक्ति रंग को अद्वितीय तर्क के रूप में लेता है, यह दिए गए ऑब्जेक्ट की प्रतिलिपि बनाता है।
लाभ वास्तव में भी निहित है कि पहले निर्माता हमेशा कहा जाता है, और आप उस का उपयोग मैन्युअल रूप से अपने उदाहरणों गिनती करने के लिए कर सकते हैं। माना कि आप private static int count=0
विशेषता है, तो आप इस तरह रंग उदाहरण की संख्या को ट्रैक कर सकते हैं:
// base ctr
public Color(int R, int G, int B, int A) {
this.R = R;
this.G = G;
this.B = B;
this.A = A;
++count;
}
count
किसी भी निर्माता से वृद्धि की जाती है।
बहुत अच्छा प्रश्न! –
क्या Schildt की प्रतिष्ठा जावा की बात आती है? मुझे याद है कि वह मूल रूप से एक हँसते हुए थे जब उन्होंने सी और सी ++ के बारे में किताबें लिखने की कोशिश की ... – cHao
श्ल्डट की जावा पुस्तक अच्छी है ... सी और सी ++ के बारे में नहीं पता। यह जावा पुस्तक बहुत बुनियादी से शुरू होती है। तो किसी के लिए, जो ओओपी और जावा के लिए नया है, यह वास्तव में प्रबुद्ध है। –