Java Access Modifiers In Hindi

📔 : Java 🔗

पिछले topics में आपने देखा होगा कि Properties / Method को define करने से पहले public keyword का use किया गया था। वह Class Properties / Method का एक visibility / access mpdifier type ही था।


Class Visibility का मतलब Property / Method का scope define करना होता है। की वह Property / Method कहाँ - कहाँ Accessible होगा। class visibility को define करने वाले keywords को ही Access Specifiers कहते हैं। C++ में Class Visibility 4 Types की होती है -

  1. default
  2. private
  3. protected
  4. public

किसी भी class में किसी भी type के members (Static या Non Static Properties / Methods ) को define करने से पहले उस Properties / Method की visibility define करनी पड़ती है। और अगर define नहीं करते हैं तो वह property / method automatically default define हो जाती है।

Java private Access Modifier

private Property / Method सिर्फ और सिर्फ Class के अंदर ही accessible होंगे। Class के बाहर कहीं भी इन्हे access नहीं कर सकते हैं। private keyword का use करके किसी class के Properties / Methods को as a private define किया जाता है।

File : B.java

CopyFullscreenClose FullscreenRun
private class A {
  // define private method.
  private void privateMethod() {
    System.out.println("This is private method");
  }
}

public class B {
  public static void main(String[] args) {
    // try to access privateMethos.
    A a = new A();
    a.privateMethod(); // it generates error.
  }
}
Output
javac B.java
java B
error: modifier private not allowed here
private class A {
        ^
B.java:12: error: privateMethod() has private access in A
    a.privateMethod(); // it generates error.
     ^
1 error

जैसा कि आप example में देख सकते हैं , कि A class के private method को class B men access करने पर compiler ने error generate की है जबकि same method को आप उसकी class में access कर सकते हैं।

File : A.java

CopyFullscreenClose FullscreenRun
public class A {
  // define private method.
  private void privateMethod() {
    System.out.println("This is private method");
  }
   
  public static void main(String[] args) {
    //now try to access privateMethos.
    A a = new A();
    a.privateMethod();
  }
}
Output
javac A.java
java A
This is private method

आप किसी class का constructor भी private define कर सकते हैं , लेकिन ध्यान रहे फिर उस class का object आप class के बाहर नहीं create कर पाएंगे, और न ही class को inherit कर सकते हैं।

Java default Access Modifiers

अगर आप class में modifiers define नहीं करते हैं तो वह property / method as a default treat की जाती है। default modifiers सिर्फ same package में access किया जा सकता है। किसी दूसरे package में default modifiers को access नहीं कर सकते हैं। यह private से थोड़ी ज्यादा accessibility provide कराता है लेकिन protected, और public से कम।

File : A.java

CopyFullscreenClose FullscreenRun
// define package.
package packageA;  
class A {  
  // define deault method
  void myMethod() {
    System.out.println("Default method in packageA");
  }  
}

File : B.java

CopyFullscreenClose FullscreenRun
// now define another package.
package packageB;  
// import all classes from packageA to use inside current package.
import packageA.*;  
public class B {  
  public static void main(String args[]) {  
   A a = new A();//Compile Time Error  
   a.myMethod();//Compile Time Error  
  }  
}

यहां हमें error मिलेगी क्योंकि , class और उसके method default हैं और उन्हें हम किसी दुसरे package access कर रहें हैं।

Java में package similar types के classes, interfaces and sub-packages का collection होते हैं। जिससे code को उसके logic के according categorize कर सकें और maintain और manage करना easy हो जाए। इसे आप PHP में Namespaces और C , C++ में libraries जैसे समझ सकते हैं। हालाँकि package के बारे में आप बाद में पढ़ेंगे।

Java protected Access Modifier

protected access modifiers , same package में accessible तो होगा ही साथ ही इसे Inheritance के through किसी दूसरे package में भी access कर सकते हैं। इसके लिए protected keyword की ही use किया जाता है। हालाँकि Inheritance को आप आगे detail में पढ़ेंगे।

protected access modifiers को आप class के data member, method और constructor पर apply कर सकते हैं , class पर नहीं। मतलब किसी class को आप protected declare नहीं कर सकते हैं।


Example के लिए ऊपर दिए गए example को अगर protected method और Inheritance के through करें तो कोई error नहीं आएगी।

File : A.java

CopyFullscreenClose FullscreenRun
package packageA;  
public class A {  
  // define deault method
  protected void myMethod() {
    System.out.println("Default method in packageA");
  }  
}

File : B.java

CopyFullscreenClose FullscreenRun
package packageB;  
import packageA.*; 

// extend class A from packaeA 
public class B extends A {  
  public static void main(String args[]) {  
   B b = new B();
   b.myMethod();
  } 
}
Output
javac B.java
java B
Default method in packageA

Java public Access Modifiers

public access modifiers , हर जगह accessible है , मतलब कोई भी class या Class में public keyword का use करके define किये गए Property / Method को कहीं से भी access कर सकते हैं। Class के अंदर , बाहर , इसके Child class में या same package और different package में भी access कर सकते हैं।

File : A.java

CopyFullscreenClose FullscreenRun
// define package.
package packageA;  
public class A {  
  // define deault method
  public void myMethod() {
    System.out.println("Default method in packageA");
  }  
}

File : B.java

CopyFullscreenClose FullscreenRun
// now define another package.
package packageB;  
// import all classes from packageA to use inside current package.
import packageA.*;  
public class B {  
  public static void main(String args[]) {  
   A a = new A();
   a.myMethod(); 
  }  
}
Output
javac B.java
java B
Default method in packageA

Related Topics :

Rahul Kumar

Rahul Kumar

Hi ! I'm Rahul Kumar Rajput founder of learnhindituts.com. I'm a software developer having more than 4 years of experience. I love to talk about programming as well as writing technical tutorials and blogs that can help to others. I'm here to help you navigate the coding cosmos and turn your ideas into reality, keep coding, keep learning :)

Get connected with me. :) LinkedIn Twitter Instagram Facebook

b2eprogrammers