Access Modifiers & Packages
public: kahin se bhi access ho sakta hai. private: sirf usi class ke andar. protected: same package + subclasses mein. default (kuch na likho): sirf same package mein.
Package related classes ka ek folder/group hai — jaise java.util mein List, Map jaise collection classes hote hain. Apna package banane ke liye "package com.code10x;" likhte hain.
package com.code10x;
public class Robot {
private int battery;
protected void charge() { battery = 100; }
}Java mein 4 access levels hain, aur inka effect depend karta hai ki accessing code kaha se hai — same class, same package, subclass (chahe alag package mein ho), ya poori duniya (koi bhi jagah).
| Modifier | Same Class | Same Package | Subclass (diff package) | World |
|---|---|---|---|---|
| public | ✅ | ✅ | ✅ | ✅ |
| protected | ✅ | ✅ | ✅ | ❌ |
| default (kuch na likho) | ✅ | ✅ | ❌ | ❌ |
| private | ✅ | ❌ | ❌ | ❌ |
Har .java file top par "package com.code10x.model;" likh sakti hai — folder structure package naam se match karna chahiye (com/code10x/model/ folder mein file honi chahiye). Doosri jagah use karne ke liye "import com.code10x.model.Student;" likhte hain, ya poore package ke liye import com.code10x.model.*;
java.lang package (String, Integer, System, etc.) automatically har file mein import hota hai, explicit import ki zaroorat nahi.
import static se static members bina class-prefix ke directly use kar sakte ho — jaise import static java.lang.Math.*; ke baad seedha sqrt(25) likh sakte ho, Math.sqrt(25) ki jagah. Zyada use karne se code confusing ho sakta hai (pata nahi chalta method kaha se aaya) — isliye sparingly use karo, mainly test frameworks (JUnit ke assertEquals) mein common hai.
Classpath JVM ko batata hai kaha dhoonde compiled .class files aur libraries. Modern build tools (Maven, Gradle) automatically classpath manage kar dete hain (dependencies download karke sahi jagah rakhte hain), lekin samajhna zaroori hai ki JVM runtime par classes kaise dhoondhti hai — agar "ClassNotFoundException" aaye, aksar classpath issue hoti hai.