Class & Object
A class defines what properties (fields) and what behavior (methods) an object will have.
An object is an "instance" of a class — a real thing you can use, with its own values.
class Car {
String color;
void drive() { System.out.println(color + " car driving!"); }
}
Car myCar = new Car();
myCar.color = "Red";
myCar.drive();Fields (variables) class ki "state" hote hain — data jo object apne paas rakhta hai (jaise Car ka color, speed). Methods "behavior" hote hain — kaam jo object kar sakta hai (jaise Car ka drive(), brake()). Ek class dono ka combination hoti hai: "ye cheez kya hai" (fields) aur "ye kya kar sakti hai" (methods).
Fields ko "attributes" ya "properties" bhi kehte hain, aur methods ko "behaviors" ya "functions". Real-world modeling mein, tum jab bhi ek class design karo, khud se do sawaal poochho: "is cheez ke paas kya information hogi?" (fields) aur "ye cheez kya-kya kar sakti hai?" (methods).
Ek hi class se banaye gaye alag-alag objects apni-apni independent field values rakhte hain — ek object ki value change karne se doosre object par koi asar nahi padta. Ye isliye hota hai kyunki har "new" call se ek naya, alag memory block (Heap mein) allocate hota hai.
Static fields is rule ka exception hain (jaise "this-static" topic mein detail se dekhoge) — wo class-level hoti hain, isliye sab objects mein shared rehti hain, ek change karne se sabme dikhta hai.
Car car1 = new Car();
Car car2 = new Car();
car1.color = "Red";
car2.color = "Blue"; // car1.color abhi bhi "Red" hi hai
System.out.println(car1 == car2); // false — do alag objects hainJab tum "new Car()" likhte ho, exactly ye hota hai step-by-step: (1) Heap memory mein jagah allocate hoti hai object (uske saare instance fields) ke liye, (2) fields ko default values milti hain (0, null, false), (3) constructor chalta hai jo fields ko meaningful starting values deta hai, (4) ek "reference" (memory address) return hota hai jo variable (jo khud Stack mein hota hai, agar local variable ho) mein store hota hai.
Isliye variable khud object NAHI hota — wo sirf ek reference/address hota hai jo Heap mein padi asli cheez ki taraf point karta hai. Yehi wajah hai ki object assign karne par (car2 = car1) dono variables same object ko point karne lagte hain (copy nahi banti, sirf address copy hota hai) — isse "aliasing" kehte hain.
| Stack | Heap | |
|---|---|---|
| Kya store hota hai | Local variables, references | Actual objects, instance fields |
| Lifetime | Method khatam, gaya | Jab tak koi reference bache, GC tak |
| Speed | Fast | Thoda slow (GC overhead) |