Access Modifier in Java in Hindi

Last Updated on July 9, 2022 by RAJENDRAPRASAD

Access Modifier in Java in Hindi – Hello दोस्तों rajhindime.in में आपका स्वागत है |

दोस्तों, पिछले पोस्ट Java Hello World – first java program using eclipse in hindi में आपने simple java programming code तथा code के विभिन्न components के बारे में विस्तृत जानकारी प्राप्त की |

आज के इस पोस्ट Access Modifier in Java in Hindi में आप जानेंगे कि Access Modifier क्या है , access modifier क्यों use किया जाता है , programming में उसका क्या महत्त्व (importance) है तथा उसके types क्या है |

Java Programming  code लिखते समय आपने public, private, protected जैसे keyword का use किया होगा । यह public, private, protected ही Access Modifier कहलाते है |

Java में Access Modifier का उपयोग किसी भी variables, class, method, constructor आदि की accessibility या scope को define करने के लिए किया जाता है |

आइए समझते हैं कि यह Access Modifier हमारे real life में किस प्रकार भूमिका अदा करते हैं ।

Access Modifier के Real-life Examples

Real-life Example 1:

किसी भी Bank का name और address publicly उपलब्ध (available) होता है ,यह public इसलिए होता है कि, जिससे हर कोई उस bank की उपस्थिति के बारे में जाने और एक दूसरे को बताए ।

परन्तु , उसी bank भी खोले गए Accounts तथा उससे सम्बंधित जानकारी जैसे Account Number, ATM PIN आदि को सुरक्षित अर्थात private रखा जाता है, जिसकी जानकारी या तो bank या फिर खाताधारक (Account Holder) को ही पता होता है |

किसी भी अन्य व्यक्ति को इस जानकारी का Access नहीं होता । क्योकि किसी अन्य व्यक्ति को इसका access होने पर वह इसका दुरूपयोग (misuse) कर सकता है |

यह सब चीज़ें अर्थात किसी भी Data की security,  java programming में Access Modifier की सहायता से ही निर्धारित किया जाता है |

Real-life Example 2:

आपके घर में उपस्थित TV, Fridge, AC जिसे केवल घर के सदस्य (member) ही use कर सकते हैं, default है ।

Garden, Road, Street Light इत्यादि सभी के लिए available होता है, public है |

आपका अपना mobile phone जिसे केवल आप ही use करते हैं, private है |

आपकी अपनी Property  जिसे केवल आप अथवा आप के बच्चे ही use कर सकते हैं, protected है |

Access Modifiers in Java

Java में Access Modifier वे reserve keyword होते हैं जिनका उपयोग किसी भी variables, class, method, constructor आदि की accessibility या scope को define करने के लिए किया जाता है | इन्हे Visibility Modifier भी कहा जाता है |

Access Modifier किसी भी class, variables, methods, constructor आदि की accessiblity को किसी अन्य class में रोकता (restrict) करता है |

Java में Access modifiers का उपयोग मुख्यतः Encapsulation के लिए किया जाता है | Program का कौन सा Part, किसी अन्य Class के data member को किस प्रकार access कर सकता है. इस पर control रखता है | इसके प्रयोग से किसी भी data को misuse होने से बचाया जाता है |

Types of Access Modifier

Java में कुल 4 Access Modifier हैं जो किसी भी class, variables, methods, constructor आदि के Access level को set अर्थात निर्धारित करते हैं |

1. Default: यह  केवल same package के अन्दर ही accessible होता है

2. Public: यह हर जगह accessible होता है

3. Private: यह  केवल same class में ही accessible होता है

4. Protected:  यह package के अन्दर तथा सभी sub classes में accessible होता है

Java कुल 8 non-Access Modifier को भी सपोर्ट करता है, जैसे final, static, synchronized, abstract, native, strictfp, volatile, transient | इन सभी को हम आने वाले post में जानेंगे |

Default (package) Access Modifier – no Keyword

जब हम किसी भी Access Modifier को mention नहीं करते हैं, तो इसे default Access Modifier समझ लिया जाता है | इसका scope package के अन्दर तक ही सीमित होता है |

इसका अर्थ यह है कि यदि हमारे program में किसी package के अंदर कोई class है जिसका access modifier default है, उस स्थिति में यह class केवल उन्हीं classes के द्वारा access किया जा सकता है जो same उसी package में स्थित हो |

इसी तरह, यदि किसी class में कोई method या variable है जिसका access modifier default है, तो वह method या variable किसी अन्य package के class में accessible नहीं होगा |

package package1;  
class A{  
void display()
{
System.out.println("Hello");
}  
}  


package package2;  
import package1.*;  
class B{  
public static void main(String args[])
{  
A obj = new A();//Compile Time Error  
obj. display ();//Compile Time Error  
}  
} 

यहाँ हमने 2 package use किया है package1 और package2 | package1 में class A तथा method display() का कोई भी access modifier नहीं है अर्थात default है |

package2 के class B में हमनें class A का object create करके उसके method display() को call किया है, जिससे हमें compile time error मिला है ऐसा इसलिए हुआ क्योंकि default method का scope उस package के अन्दर तक ही सीमित होता है जिसमे उसे declare किया गया हो |

Public Access Modifier – public

public access modifier का scope सभी access modifiers में से सबसे ज्यादा होता है, इसके scope पर कोई नियंत्रण (restriction) नहीं होता ।

class, method, constructor, interface इत्यादि जिन्हे public declare किया गया हो , वे पूरे program में कहीं से भी access किए जा सकते हैं । इसे package के अंदर तथा package के बाहर भी access किया जा सकता है ।

हालांकि, जब हम किसी public class को किसी दूसरे package में access करते हैं उस स्थिति में हमे उस class को import करना पड़ता है ।

Class inheritance की स्थिति में super class अर्थात parent class के सभी public methods और public variables, subclass अर्थात child class में accessible होते हैं |

package package1;  
public class A{  
public void display()
{
System.out.println("Hello");
}  
}  


package package2;  
import package1.*;  
class B{  
public static void main(String args[])
{  
A obj = new A();
obj. display ();
}  
} 

यहाँ package2 के class B में हमनें class A का object create करके उसके method display() को call किया है, परन्तु यहाँ हमें कोई compile time error नहीं मिला है |

ऐसा इसलिए हुआ क्योंकि यहाँ package1 में class A तथा method display() दोनों को public declare किया गया है | जिससे इन्हें package के अंदर तथा package के बाहर भी access किया जा सकता है ।

Private Access Modifier – private

Methods, variables, and constructors जिन्हे private declare किया गया हो, वे सभी केवल उसी class में accessible होंगे जिसमे उन्हें declare किया गया है | class के बाहर उन्हें access नहीं किया जा सकता |

private यह most restrictive modifier है अर्थात इसका scope सबसे ज्यादा नियंत्रित है |

ऐसे variable जिन्हे private declare किया गया हो, उन्हें class के बाहर भी access किया जा सकता है, और यह तभी possible है यदि class के अन्दर public getter() method उपलब्ध (available) हो |

NOTE : class तथा interface को कभी भी private declare नहीं किया जा सकता |

class ABC{  
  private double num = 100;
  private int square(int a){
  return a*a;
   }
} 

 
public class Example{
   public static void main(String args[]){  
	ABC obj = new ABC();  
	System.out.println(obj.num); //Compile Time Error
	System.out.println(obj.square(10)); //Compile Time Error
   }  
}

यहाँ हमने class Example में क्लास ABC का object बनाकर उसके variable num तथा method square() को print  करना चाहा तो हमे compile time error प्राप्त हुआ, ऐसा इसलिए हुआ क्योकि calss ABC के अंदर num और method square() को private declare किया गया है और private का scope केवल उसी class तक होता है जिसमे उसे declare किया गया हो |

Protected Access Modifier – protected

आमतौर पर, protected access modifier का प्रयोग parent-child relationship अर्थात inheritance में किया जाता है |

ऐसे Variables, methods, तथा constructors जिन्हें protected declare किया गया हो वे सभी same package में स्थित किसी भी class अथवा किसी अन्य package में स्थित subclass या child class द्वारा ही accessible होते हैं |

protected members (variable, method etc.) को यदि किसी अन्य package में access या call करना हो, जिस package में वह declare न हो, उस स्थिति में हमें inheritance का use करना होगा |

हम यह भी कह सकते हैं कि protected access modifier बिल्कुल default access modifier जैसा ही है, बस अंतर इतना है कि यह subclass में भी accessible होता है, चाहे वह subclass, same package अथवा किसी अन्य package में ही क्यों न स्थित हो |

यह default access modifier की तुलना में अधिक accessible होता है अर्थात protected का scope, default से थोड़ा ज्यादा होता है |

NOTE :

protected यह केवल variables, methods, तथा constructors पर ही apply होता है, यह class तथा interface पर apply नहीं होता |

किसी भी class के methods तथा variables को protected declare किया जा सकता है परन्तु, किसी भी interface के methods तथा variables को protected नहीं declare किया जा सकता |

यदि किसी class के अंदर constructor को protected declare किया गया हो तो, उस स्थिति में, उस class का instance अर्थात object केवल उसी package में create किया जा सकता है, जिस package में वह class स्थित हो | किसी अन्य package में उस class का object नहीं create किया जा सकता, ऐसा करने पर compile time error प्राप्त होगा |

package com.javapractice;

public class SuperClass{
	int a, b;

	protected SuperClass(int a, int b){
		this.a = a;
		this.b = b;
	}
	public void display() {
		System.out.println(a*b);
	}
}



package com.javapractice2;

import com.javapractice.SuperClass;

public class ChildClass2 {

	public static void main(String[] args) {
		SuperClass xyz = new SuperClass(5, 6); //compile Time error
		xyz.display();
	}
}

public अथवा protected modifier का use करके ही किसी protected variable या protected method को override किया जा सकता है |

package com.javapractice;

public class SuperClass{
	int a=5, b=7;

	protected void display() {
		System.out.println(a*b);
	}
}



package com.javapractice;

import com.javapractice2.ChildClass2;

public class ChildClass1 extends SuperClass{

	int a = 2, b = 3;
	 void display() {		//compile time error
		System.out.println(a*b);
	}
	
	
	public static void main(String[] args) {
		ChildClass1 cs1 = new ChildClass1();
		cs1.display();
		
	}
}

यहाँ ChildClass1 में SuperClass के protected display() method को override करने पर compile time error मिल रहा है,

ऐसा इसलिए है क्योकि public अथवा protected modifier का use किए बिना किसी भी protected variable या protected method को override नहीं किया जा सकता |

यदि हम void display() से पहले protected या public लिखे तो कोई compile time error नहीं आएगा |

Java Access Modifiers और Method Overriding में संबंध

1. यदि आप किसी भी method को override करते हैं, उस स्थिति में overridden method ( जो subclass में declared हो ) कभी भी more restrictive नहीं हो सकता |

2. यदि आप किसी class का sub-class create करते हैं, तब उस subclass में स्थित methods के access modifier कभी भी, उसके super class में स्थित methods से less restrictive नहीं हो सकते |

In short, ऊपर के दोनों sentences का अर्थ यह हैं कि, child अर्थात बेटे की accessibility कभी भी उसके parent अर्थात बाप से कभी भी कम नहीं हो सकती |

Inherited methods के ऊपर हमेशा नीचे दिए गए rules apply होते हैं |

1. जो method, superclass में public declare होते हैं, वे method सारे subclass में भी public ही होंगे |

2. जो method, superclass में protected declare होते हैं, वे method सारे subclass में या तो protected या फिर public ही होंगे | वे कभी भी private नहीं होंगे |

3. जो method, private declare होते हैं, वे कभी भी inherited नहीं हो सकते, अतः यहाँ कोई rule apply नहीं होता |

Conclusion – आज आपने क्या सीखा

इस post में आपने Access Modifier क्या है , access modifier क्यों use किया जाता है , programming में उसका क्या महत्त्व (importance) है तथा उसके types क्या है, इन सभी  के बारे में विस्तृत जानकारी प्राप्त की | आशा है कि, आपको मेरा यह Blog Access Modifier in Java in Hindi जरूर पसंद आया होगा |

अगर आप इस post से related कोई सवाल पूँछना चाहते हैं अथवा कोई सुझाव देना चाहते हैं तो comment करके जरूर बताएं, मैं उसका reply जरूर दूँगा |

इस post को अपना कीमती समय देने के लिए बहुत बहुत धन्यवाद् | फिर मिलेंगें |

Leave a Comment