2.1.11 · HinglishOOP Fundamentals

Method overriding — when and why

1,810 words8 min readRead in English

2.1.11 · Coding › OOP Fundamentals


WHAT it is

Teen look-alikes ka comparison (in confusions ko early steel-man karo):

Concept Same name? Same params? Resolved kab?
Overriding yes yes (same signature) runtime (object type)
Overloading yes different params compile time (arg types)
Shadowing/hiding yes (fields/static) compile time (declared type)

WHY it exists

Teen reasons kyun hum override karte hain:

  1. Specialize — child kaam ko apne hisaab se karta hai (Circle.area).
  2. Extend — child extra karta hai plus parent ka kaam bhi (pehle super() call karo, phir add karo).
  3. Fulfill a contract — ek abstract/base method zaroor children dwara implement honi chahiye.

HOW it works — dynamic dispatch ko scratch se derive karo

Hum "magically" sahi method nahi paate. Chalte hain mechanism build karte hain.

Har class ek hidden method table maintain karti hai (ek "vtable"): method name → code address ka map.

  • Shape ki table: area → Shape.area (shayad abstract/empty).
  • Circle ki table Shape ki table ki copy se shuru hoti hai, phir area → Circle.area ko overwrite karti hai.

Jab tum obj.area() call karte ho:

  1. obj ki actual class dekho (object ke andar stored hoti hai).
  2. Us class ki vtable par jao.
  3. Jahan bhi area point karta hai, wahan jump karo.

Kyun yeh sahi behavior deta hai: kyunki object apna khud ka class pointer carry karta hai, chahe woh Shape-typed variable mein hold ho, step 1 Circle dhundh leta hai, isliye step 2 Circle.area dhundh leta hai. Declared type calculation mein kabhi aata hi nahi.

Figure — Method overriding — when and why

Worked examples


Common mistakes (Steel-man + fix)


The 80/20 of this topic


Recall Feynman: ek 12-saal ke bacche ko explain karo

Ek Toy jaanta hai sound() kaise banate hain. Ek Dog toy aur ek Cat toy dono toys hain, lekin dog kehta hai "Woof" aur cat kehti hai "Meow". Jab tum kisi bhi toy se uski awaaz nikaalne ko kaho, har toy pehle se jaanta hai apna tarika — tumhe yaad rakhne ki zarurat nahi ki woh kaunsi type ka hai. Method overriding bas har cheez ko allow karta hai ki woh ek hi sawaal ka apne sahi tarike se jawab de, automatically.


Active-recall flashcards

Method overriding kya hai?
Ek subclass apni khud ki implementation deta hai ek aisi method ki jo already uske superclass mein defined hai, same name, parameters, aur compatible return type use karke.
Overriding vs overloading — kya differ karta hai?
Overriding = same signature, runtime par object type se resolve hota hai. Overloading = different parameters, compile time par argument types se resolve hota hai.
KAUNSA type decide karta hai ki kaunsa overridden method run hoga?
Object ka runtime (actual) type, variable ka declared/static type nahi — yahi dynamic dispatch hai.
Overriding mein vtable ka kya role hai?
Ek per-class table jo method name → code address map karti hai; child parent ki table copy karta hai phir overridden entries overwrite karta hai, taaki dispatch child ka version dhundh sake.
Overriding Open/Closed Principle ko kyun support karta hai?
Naya behavior ek naya subclass likh kar add hota hai (extension), existing type-checking if/else code edit karne ke bajaye (modification).
Kya tum overriding mein access narrow kar sakte ho?
Nahi — tum access widen kar sakte ho aur ek subtype return kar sakte ho (covariant return), lekin access narrow karna ya broader checked exceptions add karna substitutability (Liskov) todta hai.
Kya static methods override hote hain?
Nahi — woh hide hote hain (compile time par declared type se resolve hote hain); sirf instance methods override hote hain.
Override mein super() kya karta hai?
Parent ka method ka version call karta hai, child ko fully replace karne ki bajaye behavior extend karne deta hai.

Connections

  • Inheritance — overriding sirf ek inheritance chain ke along hota hai.
  • Polymorphism — overriding runtime polymorphism ka engine hai.
  • Method overloading — compile-time look-alike, contrast ke liye.
  • Abstract classes and interfaces — methods jo zaroor override hone chahiye.
  • Liskov Substitution Principle — woh rule jo overrides ko respect karna chahiye.
  • Open-Closed Principle — overriding ka design payoff.
  • super keyword — parent ke behavior ko extend karna.

Concept Map

means

requires

resolved by

selects on

implemented via

copies then overwrites

lets step1 find

looked up using

enables

because it

contrasts, resolved compile time

contrasts, uses declared type

Method overriding

Subclass reimplements method

Same name and params

Dynamic dispatch

Runtime object type

Per-class vtable

Object class pointer

Open/Closed Principle

Kills if-else ladders

Overloading

Shadowing/hiding