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

क्या हम जावा में स्थिर विधियों को अधिभार या ओवरराइड कर सकते हैं?

जावा में स्टेटिक विधियों को अतिभारित किया जा सकता है। लेकिन एक शर्त है कि दो विधियों को ओवरलोड नहीं किया जा सकता है I वे केवल 'स्थैतिक' कीवर्ड के कारण भिन्न हैं।

आइए एक उदाहरण देखें -

उदाहरण

public class Demo{
   public static void test(){
      System.out.println("Demo class test function has been called");
   }
   public static void test(int val){
      System.out.println("Demo class test function with parameter has been called");
   }
   public static void main(String args[]){
      System.out.println("In the main class, Demo functions being called");
      Demo.test();
      Demo.test(57);
   }
}

आउटपुट

In the main class, Demo functions being called
Demo class test function has been called
Demo class test function with parameter has been called

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

जावा में स्टेटिक विधियों को ओवरराइड नहीं किया जा सकता है। समान हस्ताक्षर वाले स्थैतिक तरीकों को उप-वर्ग में परिभाषित किया जा सकता है, लेकिन यह रनटाइम बहुरूपता नहीं होगा। इसलिए, ओवरराइडिंग संभव नहीं है। यहाँ एक उदाहरण है -

उदाहरण

class base_class{
   public static void show(){
      System.out.println("Static or class method from the base class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the base class");
   }
}
class derived_class extends base_class{
   public static void show(){
      System.out.println("Static or class method from the derived class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the derived class");
   }
}
public class Demo{
   public static void main(String args[]){
      base_class my_instance = new derived_class();
      System.out.println("Base class instance created.");
      my_instance.show();
      System.out.println("Function show called");
      my_instance.print_it();
      System.out.println("Function print_it called");
   }
}

आउटपुट

Base class instance created.
Static or class method from the base class
Function show called
Non-static or an instance method from the derived class
Function print_it called

बेस क्लास में 'शो' नाम का एक स्टैटिक फंक्शन होता है जो एक मैसेज को प्रिंट करता है। इसी तरह, 'print_it' नाम का एक अन्य फ़ंक्शन एक संदेश प्रदर्शित करता है। एक वर्ग बेस क्लास से लिया गया है जो दो कार्यों को प्राप्त करता है। डेमो नामक एक वर्ग में मुख्य कार्य होता है जो बेस क्लास का एक उदाहरण बनाता है जो व्युत्पन्न प्रकार वर्ग का होता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होते हैं।


  1. क्या एनम जावा में किसी भी वर्ग का विस्तार कर सकता है?

    जावा में एन्यूमरेशन (एनम) एक डेटाटाइप है जो स्थिर मूल्यों का एक सेट संग्रहीत करता है। आप निश्चित मानों जैसे सप्ताह में दिन, वर्ष में महीने आदि को संग्रहीत करने के लिए गणनाओं का उपयोग कर सकते हैं। आप एनम कीवर्ड का उपयोग करके एक एन्यूमरेशन को परिभाषित कर सकते हैं, उसके बाद एन्यूमरेशन के नाम के रूप मे

  1. क्या हम जावा में संरक्षित विधि को ओवरराइड कर सकते हैं?

    हां , सुपरक्लास की संरक्षित विधि को ओवरराइड . किया जा सकता है एक उपवर्ग द्वारा। यदि सुपरक्लास विधि सुरक्षित है, तो उपवर्ग ओवरराइड विधि में संरक्षित . हो सकता है या सार्वजनिक (लेकिन नहीं डिफ़ॉल्ट या निजी ) जिसका अर्थ है उपवर्ग ओवरराइड विधि में कमजोर पहुंच विनिर्देशक नहीं हो सकता है । उदाहरण class

  1. हम जावा में JTextField में पैडिंग कैसे जोड़ सकते हैं?

    A JTextField JTextComponent . का उपवर्ग है वर्ग और यह सबसे महत्वपूर्ण घटकों में से एक है जो उपयोगकर्ता को एकल-पंक्ति प्रारूप में टेक्स्ट मान इनपुट करने की अनुमति देता है . एक JTextField वर्ग एक एक्शन लिस्टनर generate उत्पन्न करेगा इंटरफ़ेस जब हम इसके अंदर कुछ इनपुट दर्ज करने का प्रयास करते हैं। J