LearnThatStack Ace your next interview
Object-Oriented Programming · question
Question 4 of 90

What is inheritance for, and what types of inheritance exist?

beginner
← All Object-Oriented Programming questions
Re-explain

Inheritance lets one class take another's fields and behaviour as a starting point, then add to them or replace parts. It gives code reuse and a subtype relationship, so a dog can be passed anywhere an animal is expected. The second matters more.

Textbooks name the shapes by how the arrows point:

  • Single: one class extends one parent.
  • Multilevel: a chain, where a child is also a parent.
  • Hierarchical: several classes extend the same parent.
  • Multiple: one class extends more than one parent, which most languages allow for interfaces but not classes.

The split worth remembering is implementation inheritance versus interface inheritance. Taking a parent's code ties you to its internals, so its next change can break you. Taking only its contract does not.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

The diagram below the answer is the concept . Jump to it ↓

Tailored explanation · switch back to · ·
What should the new diagram focus on?
Guided practice for Object-Oriented Programming One question at a time. Answer out loud, get graded, see what you missed.
How well did you know this?
AI:

Saved in this browser - sign in to keep your review list.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Interview lens How interviewers actually use this question

Likely follow-ups

  • Why do most languages let a class implement many interfaces but extend only one class? Two parent classes can bring clashing fields and method bodies, and a pure contract has none. Default methods bring back a smaller version of the clash.
  • What is the diamond problem, and how does a language avoid it? Names the shared grandparent reached by two paths and one fix, such as C++ virtual inheritance or Python's method resolution order.
  • What must a subclass guarantee so it can be passed wherever the parent is expected? Points to Liskov substitution. The subclass keeps every promise the parent makes, so code that only knows the parent never gets a surprise.
  • How can a change to a base class break subclasses that never changed? Names the fragile base class problem, with a case like a parent method that starts calling a method the child has overridden.
  • When would you reach for composition instead of extending a class? Uses is-a versus has-a, and says composition depends only on the part's interface and can swap behaviour at runtime.

What you can say

  1. Inheritance lets one class start from another class's fields and behaviour, then add to them or replace parts.
  2. It gives you code reuse and a subtype relationship, and I'd say the subtype part matters more, because then a Dog can go anywhere an Animal is expected.
  3. Textbooks name the types by how the arrows point, so single is one class extending one parent, and multilevel is a chain where a child is also a parent.
  4. Hierarchical is several classes sharing one parent, and multiple is one class with more than one parent, which most languages allow for interfaces but not for classes.
  5. The split I'd actually keep in mind is implementation inheritance versus interface inheritance.
  6. Taking a parent's code ties you to its internals, so its next change can break you, but taking only its contract doesn't.

Weak answers to avoid

  • Sells inheritance as mainly code reuse Reuse is the weaker reason, and it's the one that ties you to the parent's internals. Lead with substitutability, a Dog usable wherever an Animal is expected.
  • Recites the four types and stops Listing single, multilevel, hierarchical and multiple is just recall. Add the implementation versus interface split and say why taking a parent's code is risky.
  • Says multiple inheritance is never allowed Most languages forbid it for classes but allow many interfaces, and C++ allows it for classes too. Say which kind you mean.
  • Uses inheritance for has-a relationships Extending a class only to borrow its methods, like Car extends Engine, creates a false subtype. Say you'd compose when there is no real is-a.
Interview lens

Likely follow-ups, what you can say, and the weak answers to avoid.

Sign in free to open it Free account - the lens opens as soon as you're back.

Want a quick review of the fundamentals? See the Object-Oriented Programming cheatsheet.

← Back to all Object-Oriented Programming questions
Pro · $10/mo

81 of 90 Object-Oriented Programming answers are in Pro.

Full answers, code samples, and AI explanations that go simpler or deeper. Cancel anytime.

  • Full answers + code
  • AI explanations, simpler or deeper
  • 1,000 AI credits / month
  • Cancel anytime