એ નો સંબંધ છે — જે સાથે મોડેલ કરવામાં આવે છે (એક ). એ નો સંબંધ છે — જે સાથે મોડેલ કરવામાં આવે છે (એક ). સાચો પસંદ કરવો એ મોડલિંગનો મુખ્ય નિર્ણય છે.
એ નો સંબંધ છે — જે સાથે મોડેલ કરવામાં આવે છે (એક ). એ નો સંબંધ છે — જે સાથે મોડેલ કરવામાં આવે છે (એક ). સાચો પસંદ કરવો એ મોડલિંગનો મુખ્ય નિર્ણય છે.
CarVehicleCarEngine// IS-A → inheritance
class Vehicle { void move() {} }
class Car extends Vehicle { } // a Car IS A Vehicle
// HAS-A → composition
class Engine { void start() {} }
class Car2 {
private Engine engine = new Engine(); // a Car HAS AN Engine
void start() { engine.start(); } // delegate to the part
}
પ્રશ્ન પૂછો: "X a kind of Y છે, અથવા X have/use a Y કરે છે?"
A Dog IS-A Animal → inheritance ✅
A Car HAS-A Engine → composition ✅
A Square IS-A Shape → inheritance ✅
A Manager HAS Employees → composition (a list) ✅
A Stack HAS-A list (not IS-A) → composition (see earlier pitfall) ✅
લોકો code reuse કરવા માટે inheritance તરફ દોઠણ કરે છે, ભલે સંબંધ ખરેખર has-a હોય. જો તમે subclass ને base ની જગ્યાએ ક્યાંય substitute ન કરી શક્તા હોત, તો તે બંદ is-a નથી — composition વાપરો.
યો તફાવત "favor composition over inheritance" પાછળનો વ્યવહારિક નિર્ણય નિયમ છે: તે સંબંધ પસંદ કરો જે સાચો છે, તે નહીં જે થોડી લીટીઓ બચાવે છે.
તેને સાચું મેળવવું પરિમાણો ને ઓછો અને સત્ય રાખે છે, અને તે Liskov ઉલ્લંઘનોને રોકે છે જ્યાં
વિગતવાર જવાબો સાથે IT ઇન્ટરવ્યૂ પ્રશ્નોની લાઇબ્રેરી — જુનિયરથી સિનિયર સુધી.
દાન કરો