Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में कंस्ट्रक्टर का नाम क्लास के नाम के समान क्यों होता है?


हर क्लास ऑब्जेक्ट को उसी new कीवर्ड का उपयोग करके बनाया जाता है, इसलिए इसमें उस क्लास के बारे में जानकारी होनी चाहिए जिसका ऑब्जेक्ट इसे बनाना है। इस कारण से, कंस्ट्रक्टर का नाम क्लास के नाम के समान होना चाहिए।

उदाहरण

class MyConstructor {
    public MyConstructor() {
        System.out.println("The constructor name should be same as the class name");
    }
    
    public static void main(String args[]) {
        MyConstructor mc = new MyConstructor();
    }
}

उपरोक्त प्रोग्राम में, कंस्ट्रक्टर का नाम क्लास के नाम के समान होना चाहिए (MyConstructor)।

आउटपुट

The constructor name should be same as the class name

गहन व्याख्या

क्यों यह डिजाइन निर्णय?

कारणव्याख्या
पहचानnew ClassName() सिंटैक्स में, क्लास नाम ही कंस्ट्रक्टर को पहचानता है। अलग नाम के लिए अतिरिक्त सिंटैक्स की आवश्यकता होती।
सरलताएक ही नाम भाषा को सरल रखता है - कोई अतिरिक्त कीवर्ड (जैसे constructor) नहीं।
कंपाइलर/रनटाइमJVM को पता होता है कि new MyClass() का अर्थ है MyClass का नो-आर्ग कंस्ट्रक्टर कॉल करना।
कन्वेंशनC++ और अन्य भाषाओं के साथ संगतता।

कंस्ट्रक्टर की विशेषताएं

  • कोई रिटर्न टाइप नहीं (यहां तक कि void भी नहीं)।
  • नाम = क्लास नाम (केस-सेंसिटिव)।
  • कंस्ट्रक्टर चेनिंग: this() (समान क्लास का अन्य कंस्ट्रक्टर) या super() (पेरेंट कंस्ट्रक्टर) पहली लाइन होना चाहिए।
  • डिफ़ॉल्ट कंस्ट्रक्टर: यदि कोई कंस्ट्रक्टर परिभाषित नहीं है, तो कंपाइलर नो-आर्ग कंस्ट्रक्टर प्रदान करता है।
  • ओवरलोडिंग: एक क्लास में अलग-अलग पैरामीटर्स के साथ कई कंस्ट्रक्टर हो सकते हैं।

कंस्ट्रक्टर ओवरलोडिंग उदाहरण

public class Student {
    private String name;
    private int age;
    
    // नो-आर्ग कंस्ट्रक्टर
    public Student() {
        this("Unknown", 0); // चेनिंग
    }
    
    // पैरामीटर्स के साथ
    public Student(String name) {
        this(name, 0);
    }
    
    // पूर्ण कंस्ट्रक्टर
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

कंस्ट्रक्टर vs मेथड

विशेषताकंस्ट्रक्टरमेथड
नामक्लास नाम के समानकोई भी वैध पहचानकर्ता
रिटर्न टाइपकोई नहींआवश्यक (void भी)
उद्देश्यऑब्जेक्ट आरंभीकरणव्यवहार/कार्यक्षमता
विरासतविरासत में नहीं मिलतेविरासत में मिलते हैं
ओवरराइडिंगनहींहां
डिफ़ॉल्टकंपाइलर देता है (यदि कोई नहीं)कंपाइलर नहीं देता

निष्कर्ष: कंस्ट्रक्टर का नाम क्लास के समान होने से new ClassName() सिंटैक्स स्वाभाविक और अस्पष्टता-मुक्त बनता है। यह ऑब्जेक्ट निर्माण के लिए एक स्पष्ट, मानक प्रवेश बिंदु प्रदान करता है।

  1. Java में Cursor क्लास का महत्व क्या है? Java में Cursor क्लास का महत्व क्या है?

    एक Cursor, Object क्लास का एक सबक्लास है और इसे स्क्रीन पर पॉइंट या इंडिकेटर के रूप में परिभाषित किया जा सकता है। एक Cursor का उपयोग सिस्टम से इनपुट चुनने के लिए किया जाता है जिसे यूजर माउस के साथ संचालित करता है। Cursor क्लास में उपलब्ध विभिन्न प्रकार के कर्सर हैं: DEFAULT_CURSOR, CROSSHAIR_CURSOR,

  1. - Java में String क्लास इम्यूटेबल या final क्यों है?

    स्ट्रिंग इम्यूटेबल (immutable) का अर्थ है कि हम ऑब्जेक्ट को स्वयं नहीं बदल सकते, लेकिन हम ऑब्जेक्ट के रेफरेंस को बदल सकते हैं। स्ट्रिंग को final बनाया गया है ताकि कोई इसे एक्सटेंड न कर सके और इसकी इम्यूटेबिलिटी को नष्ट न कर सके। String के इम्यूटेबल/फाइनल होने के कारण 1. सुरक्षा (Security) पैरामीट

  1. - Java में कंस्ट्रक्टर final क्यों नहीं हो सकता

    final कीवर्ड एक मेथड को ओवरराइड होने से रोकता है। एक कंस्ट्रक्टर को ओवरराइड नहीं किया जा सकता, Java इसे final के रूप में चिह्नित करने की अनुमति नहीं देता।