Default and Static Methods in Interfaces In Hindi

Default and Static Methods in Interfaces In Hindi

जावा प्रोग्रामिंग लैंग्वेज में, जावा 8 वर्जन से पहले, इंटरफ़ेस में ज़्यादातर यूजर डिफाइन कस्टम एब्स्ट्रैक्ट मेथड डिक्लेअर हो सकते थे। जावा 8 वर्जन ने इंटरफ़ेस में एक कस्टम मेथड इम्प्लीमेंटेशन को डिक्लेअर या इन्क्लुड करने के लिए कई डिफ़ॉल्ट और स्टैटिक मेथड जावा यूजर के लिए पेश किए।

Default and Static Methods in Interfaces In Hindi

Default Method in Java Interface.

जावा प्रोग्राम में डिफ़ॉल्ट मेथड एक क्लास इंटरफ़ेस के अंदर का एक कस्टम मेथड डिक्लेअर होता है, जिसमें एक यूजर डिफाइन बॉडी/इम्प्लीमेंटेशन डिक्लेअर होता है।

जावा यूजर डिफ़ॉल्ट मेथड को एक क्लास में डिफ़ॉल्ट कीवर्ड का यूज़ करके डिक्लेयर या डिफाइन कर सकता है।

Syntax of Default Method.

interface Student {

    default void course() {

        System.out.println(“Select your desire course”);

    }

}

यहाँ इस एक्साम्प्ल में क्लास इंटरफ़ेस को इम्प्लीमेंट करने वाला क्लास डायरेक्ट  डिफ़ॉल्ट मेथड का यूज़ कर सकता है।

Example of Default Method Interface.

interface Student {

    default void course() {

        System.out.println(“Student can select nielit CCC course”);

    }

}

class Ccc implements Student {

}

public class Main {

    public static void main(String[] args) {

        Ccc c = new Ccc();

        c.course();

    }

}

Its output.

Student can select nielit CCC course

यहाँ इस एक्साम्प्ल में, Ccc क्लास को course() इम्प्लीमेंट करने की ज़रूरत नहीं है, क्योंकि इंटरफ़ेस पहले से ही एक डिफ़ॉल्ट इम्प्लीमेंटेशन को प्रोवाइड करता है।

Overriding a Default Method in a Java Program.

जावा प्रोग्राम में एक क्लास में डिफ़ॉल्ट मेथड को इम्प्लीमेंट करने वाला क्लास डिफ़ॉल्ट मेथड को ओवरराइड कर सकता है।

interface Student {

    default void course() {

        System.out.println(“Student can select his desire course”);

    }

}

class Olevel implements Student {

    @Override

    public void course() {

        System.out.println(“Student Can Select Nielit O Level course”);

    }

}

public class Main {

    public static void main(String[] args) {

        Olevel olevel = new Olevel();

        olevel.course();

        // here it Using the interface class reference

        Student student = new Olevel();

        student.course();

    }

}

Its output.

Student Can Select Nielit O Level course

यहाँ इस एक्साम्प्ल में, यूजर डिक्लेअर क्लास डिफ़ॉल्ट मेथड एक डिफ़ॉल्ट इम्प्लीमेंटेशन को प्रोवाइड करता है, लेकिन इसमें इम्प्लीमेंट करने वाला यूजर डिफाइन क्लास इसे रिप्लेस कर सकता है।

Why were default methods introduced in Java?

जावा लैंग्वेज में डिफ़ॉल्ट मेथड इम्प्लीमेंटेशन लांच में एक ज़रूरी वजह यह थी कि मौजूदा डिफ़ॉल्ट क्लास मेथड इम्प्लीमेंटेशन को ब्रेक किए बिना क्लास इंटरफ़ेस को डेवलप होने दिया जाए।

माना यहाँ एक क्लास में एक इंटरफ़ेस में ओरिजिनली यह क्लास नेचर डिफाइन है.

interface Employee {

    void join();

}

यहाँ इस क्लास मेथड में कई क्लास इसे पहले से ही इम्प्लीमेंट कर सकती हैं.

class Company implements Employee {

    @Override

    public void join() {

        System.out.println(“Employee join company”);

    }

}

यदि इस क्लास मेथड में कोई नया एब्सट्रैक्ट मेथड को जोड़ा जाता है.

void leave();

तो इसमें हर मौजूदा इम्प्लीमेंट करने वाली क्लास को इसे इम्प्लीमेंट करना होगा।

इसके बदले, जावा इसके यूजर को एक डिफ़ॉल्ट इम्प्लीमेंटेशन प्रोवाइड कर सकता है.

interface Employee {

void join();

default void leave() {

System.out.println(“Employee leave company”);

}

}

मौजूदा क्लास leave() फंक्शन को इम्प्लीमेंट किए बिना काम करना जारी रख सकती हैं।

Complete example of default methods.

interface Employee {

    void join();

    default void leave() {

        System.out.println(“Employee leave company”);

    }

}

class Company implements Employee {

    @Override

    public void join() {

        System.out.println(“Employee join company”);

    }

}

public class Main {

    public static void main(String[] args) {

        Company company = new Company();

        company.join();

        company.leave();

    }

}

Static method concept in Java interfaces.

जावा प्रोग्राम में एक स्टैटिक क्लास मेथड इंटरफ़ेस से ही कनेक्टेड होता है, न कि क्लास इंटरफ़ेस को इम्प्लीमेंट करने वाले किसी ऑब्जेक्ट से कनेक्ट होता है।

जावा यूजर इसे प्रोग्राम में स्टैटिक कीवर्ड का यूज़ करके डिक्लेयर डिफाइन कर सकते है।

Example of the static method concept.

interface Total_value {

    static int total(int p, int q) {

        return p + q;

    }

}

//यहाँ मेथड को इंटरफ़ेस नाम का यूज़ करके कॉल किया जाता है.

public class Main {

    public static void main(String[] args) {

        int add_value = Total_value.total(4, 7);

        System.out.println(add_value);

    }

}

Its output.

11

जावा में स्टैटिक मेथड को किसी ऑब्जेक्ट के ज़रिए कॉल नहीं किया जा सकता

यह गलत है.

Total_value total = …;

t.total(4, 7); //

// यह एक सही तरीका है.

Total_value.total(4, 7); //

यहाँ इसमें स्टैटिक इंटरफ़ेस मेथड इंटरफ़ेस के ही होते हैं।  

Static methods cannot be overridden in a Java program.

Static methods overridden example.

interface Sample {

    static void preview() {

        System.out.println(“Sample class Interface”);

    }

}

// यहाँ इस एक्साम्प्ल में एक क्लास में एक ही नाम का मेथड हो सकता है.

class Presentation implements Sample {

    static void preview() {

        System.out.println(“Presentation class interface”);

    }

}

public class Main {

    public static void main(String[] args) {

        Sample.preview();

        Presentation.preview();

    }

}

लेकिन इसमें यह इंटरफ़ेस के स्टैटिक मेथड को ओवरराइड नहीं कर रहा है। वे अलग-अलग स्टैटिक मेथड हो सकते हैं।

Main difference between default vs static methods

#Default interface class methodStatic interface class method
1.Uses default keyword for default method interface declarationUses static keyword for static class method interface declaration
2.Default interfaceclasshas its own a method bodyStatic interface classhas a its own method body
3.Default interfaceclasscan be overriddenStatic interface classcannot be overridden
4.Default interface class methodcalled using an implementing objectStatic interface classmethodcalled using interface name
5.Default interface class methodsupports polymorphism methodStatic interface classmethoddoes not participate in instance polymorphism method
6.Default interface class method firstintroduced in java 8Static interface classmethodfirstintroduced in java 8

Example of default vs. static methods.

interface Sample {

    default void show() {

        System.out.println(“Default class method”);

    }

    static void preview() {

        System.out.println(“Static class method”);

    }

}

public class Main {

    public static void main(String[] args) {

        Sample obj = new Sample() {};

        obj.show();       // here we define default class method

        Sample.preview();   // here we define static class method

    }

}

Multiple class interfaces in Java with the same default method.

जावा प्रोग्राम में एक यूजर डिफाइन क्लास मल्टीप्ल इंटरफ़ेस को एक साथ इम्प्लीमेंट या अप्लाई कर सकती है।

यहाँ माना की इस प्रोग्राम में.

interface Sample1 {

    default void preview() {

        System.out.println(“Sample1 class element”);

    }

}

इसके बाद।

interface Sample2 {

    default void preview() {

        System.out.println(“Sample2 class element”);

    }

}

अब.

class Group implements Sample1, Sample2 {

}

इससे क्लास इंटरफ़ेस का कॉन्फ़्लिक्ट हो सकता है, क्योंकि जावा को नहीं पता कि कोनसा preview() फंक्शन मेथड को यूज़ करना है।

इसमें क्लास को इसे ओवरराइड करना होगा।

class Group implements Sample1, Sample2 {

    @Override

    public void preview() {

        System.out.println(“Group”);

    }

}

Calling the default method of a specific interface in Java.

जावा इंटरफ़ेस प्रोगाम में क्लास को इम्प्लीमेंट करने वाली क्लास के अंदर, जावा यूजर किसी स्पेशल क्लास इंटरफ़ेस के डिफ़ॉल्ट मेथड को क्लियर आर्डर में कॉल कर सकते हैं.

InterfaceName.super.methodName();

Calling the default method of an instance of a specific interface.

interface ClassFirst {

    default void preview() {

        System.out.println(“Class First”);

    }

}

interface ClassSecond {

    default void preview() {

        System.out.println(“Class Second”);

    }

}

class SampleClass implements ClassFirst, ClassSecond {

    @Override

    public void preview() {

        ClassFirst.super.preview();

        ClassSecond.super.preview();

        System.out.println(“Sample Class”);

    }

}

public class Main {

    public static void main(String[] args) {

        SampleClass obj = new SampleClass();

        obj.preview();

    }

}

Its output.

Class First

Class Second

Sample Class

Important points about Default and Static Methods in Interfaces.

Default Method

default void preview() {

// User-defined class interface implementation

}

  • Java 8 वर्जन में पहली बार इसे पेश किया गया.
  • यह एक क्लास इंटरफ़ेस में एक बॉडी है.
  • इसे क्लास इंटरफ़ेस में ओवरराइड किया जा सकता है.
  • क्लास में इम्प्लीमेंट करने वाले क्लास ऑब्जेक्ट के ज़रिए इसे कॉल किया जाता है.
  • यह क्लास इंटरफ़ेस में कम्पैटिबिलिटी को बनाए रखते हुए इंटरफ़ेस में नई फ़ंक्शनैलिटी ऐड करने में हेल्प करता है.

Static Method

static void preview() {

// User-defined class interface implementation

}

  • Java 8 वर्जन में पहली बार इसे पेश किया गया.
  • यह एक क्लास इंटरफ़ेस में एक बॉडी है.
  • स्टैटिक मेथड को क्लास में ओवरराइड नहीं किया जा सकता है.
  • स्टैटिक मेथड इंटरफ़ेस नाम का यूज़ करके कॉल किया जाता है.
  • जावा प्रोग्राम में इंटरफ़ेस से जुड़े यूटिलिटी/हेल्पर मेथड के लिए यूज़फुल है.

Easy distinction between Java Default and Static Methods.

डिफ़ॉल्ट क्लास मेथड

↓

ऑब्जेक्ट → obj.method()

स्टैटिक क्लास मेथड

↓

इंटरफ़ेस → Interface.method()

Example of both Default and Static Methods.

interface Sample {

    default void display() {

        System.out.println(“Default method define”);

    }

    static void preview() {

        System.out.println(“Static method define”);

    }

}

public class Main {

    public static void main(String[] args) {

        Sample obj = new Sample() {};

        obj.display();    // Default class method define

        Sample.preview(); // Static class method define

    }

}

Leave a Reply