Java Composition (Strong HAS-A) 🏠
Java Composition is a core Java concept covering learn about Composition in Java with real-world examples: Houses, Cars, and Computers. Understand why parts cannot exist without the whole. This topic is essential for academic learning, board exam preparation, and developing optimized real-world code.
Mentor's Note: Composition is about Ownership. It means an object is made up of smaller parts. If you destroy the main object, the parts are destroyed too. They are "bound" together forever. 💡
🌟 The Scenario: The Modern House 🏠
Think about your home.
- The Whole: The House.
- The Parts: The Kitchen, the Bedroom, and the Bathroom.
- The Bond: If the house is demolished, the kitchen doesn't survive on its own in the middle of the street. It is part of the house. ✅
🎨 Visual Logic: Strong Parts
(-- represents strong ownership)*
💻 Java Implementation: The Ownership Lab
1. The Car & Engine 🚗
Logic: A Car has an Engine. The engine belongs to that car.
class Engine {
void start() { System.out.println("Engine Vroom! ⚙️"); }
}
class Car {
// Composition: The Engine is created INSIDE the Car
private final Engine engine;
Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("Car is moving... 🏎️");
}
}
2. The Personal Computer 💻
Logic: A Computer has a CPU.
class CPU {
String model = "Intel i9";
}
class Computer {
private CPU cpu = new CPU(); // Strong bond
void showSpecs() {
System.out.println("Powered by: " + cpu.model);
}
}
3. The Human Body 🧠
Logic: A Human has a Heart.
class Heart {
void beat() { System.out.println("Lubb-Dupp... ❤️"); }
}
class Human {
private final Heart heart = new Heart();
}
📖 Composition vs. Inheritance
| Feature | Inheritance (IS-A) | Composition (HAS-A) |
|---|---|---|
| Bond | Permanent Family | Assembly of Parts |
| Visibility | Shares code with child | Keeps parts Private |
| Flexibility | Rigid | Flexible (can swap parts) |
| Rule | A Dog is an Animal | A Car has an Engine |
💡 Interview Tip 👔
"Interviewers often say: 'Favor Composition over Inheritance.' Why? Because Composition allows you to change the parts easily without breaking the whole system. It makes your code more modular!"
💡 Pro Tip: "Composition is like LEGO. You build complex things by snapping together smaller, specialized bricks."