Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a key limitation of inheritance regarding multiple parent classes in Java?
Java does not support multiple inheritance with classes, meaning a class cannot inherit from more than one class directly. This avoids complexity and ambiguity.
Click to reveal answer
intermediate
Why can inheritance lead to tight coupling between classes?
Because the child class depends heavily on the parent class's implementation, changes in the parent can affect the child, making the system less flexible.
Click to reveal answer
beginner
Can private members of a parent class be accessed directly by a child class in Java?
No, private members are not accessible directly by child classes. They are hidden and can only be accessed through public or protected methods.
Click to reveal answer
advanced
What problem does the 'diamond problem' illustrate in inheritance?
The diamond problem occurs when a class inherits from two classes that both inherit from the same superclass, causing ambiguity about which superclass method to use. Java avoids this by disallowing multiple class inheritance.
Click to reveal answer
intermediate
How does Java allow multiple inheritance of behavior despite class inheritance limitations?
Java allows a class to implement multiple interfaces, which lets it inherit method signatures from many sources without inheriting implementation, avoiding multiple inheritance issues.
Click to reveal answer
Which of the following is NOT allowed in Java inheritance?
AA class inheriting from multiple classes
BA class inheriting from one class
CA class implementing multiple interfaces
DA class overriding a parent method
✗ Incorrect
Java does not support multiple inheritance with classes to avoid ambiguity and complexity.
Can a child class access private fields of its parent class directly?
AOnly through public or protected methods
BNo, never
COnly if the child class is in the same package
DYes, always
✗ Incorrect
Private fields are hidden from child classes but can be accessed via public or protected methods.
What does tight coupling in inheritance mean?
AChild classes are independent of parent classes
BChild classes depend heavily on parent classes
CParent classes depend on child classes
DClasses have no relationship
✗ Incorrect
Tight coupling means child classes rely strongly on parent classes, making changes risky.
How does Java avoid the diamond problem?
ABy using abstract classes only
BBy allowing multiple inheritance
CBy using private inheritance
DBy disallowing multiple class inheritance
✗ Incorrect
Java avoids the diamond problem by not allowing a class to inherit from more than one class.
What feature allows Java to have multiple inheritance of behavior?
AMultiple class inheritance
BAbstract classes
CInterfaces
DStatic methods
✗ Incorrect
Interfaces let a class inherit method signatures from multiple sources without implementation conflicts.
Explain the main limitations of inheritance in Java and how Java addresses them.
Think about what Java allows and disallows in class relationships.
You got /4 concepts.
Describe the diamond problem and why it is important in understanding inheritance limitations.
Consider how multiple inheritance can confuse which method to use.
You got /3 concepts.
Practice
(1/5)
1.
Which of the following is not allowed in Java inheritance?
Extending multiple classes
Extending a final class
Overriding a final method
All of the above
easy
A. Extending multiple classes
B. Extending a final class
C. Overriding a final method
D. All of the above
Solution
Step 1: Understand Java inheritance rules
Java supports only single inheritance of classes, so extending multiple classes is not allowed.
Step 2: Check restrictions on final classes and methods
Classes declared as final cannot be extended, and final methods cannot be overridden.
Final Answer:
All of the above -> Option D
Quick Check:
Java disallows multiple inheritance, final class extension, and final method overriding [OK]
Hint: Remember: final means no inheritance or override allowed [OK]
Common Mistakes:
Thinking Java supports multiple class inheritance
Trying to override final methods
Assuming final classes can be extended
2.
Which of the following class declarations is correct in Java?
public class Animal {}
public class Dog extends Animal {}
public class Cat extends Dog, Animal {}
easy
A. All classes are correctly declared
B. Only Dog class declaration is correct
C. Cat class declaration is correct
D. Animal class declaration is incorrect
Solution
Step 1: Check single inheritance rule
Java allows a class to extend only one class. Dog extends Animal correctly.
Step 2: Analyze Cat class declaration
Cat tries to extend Dog and Animal simultaneously, which is invalid syntax in Java.
Final Answer:
Only Dog class declaration is correct -> Option B
Quick Check:
Single inheritance means one parent only [OK]
Hint: Java classes extend only one class at a time [OK]
Common Mistakes:
Trying to extend multiple classes in one declaration
Confusing interfaces with classes for multiple inheritance
Assuming all class declarations are valid
3.
What will be the output of the following Java code?
final class Vehicle {
void start() { System.out.println("Vehicle started"); }
}
class Car extends Vehicle {
void start() { System.out.println("Car started"); }
}
public class Test {
public static void main(String[] args) {
Car c = new Car();
c.start();
}
}
medium
A. Compilation error
B. Vehicle started
C. Runtime error
D. Car started
Solution
Step 1: Identify final class usage
The class Vehicle is declared final, so it cannot be extended by any class including Car.
Step 2: Check inheritance and compilation
Since Car tries to extend final Vehicle, the compiler will throw an error.
Final Answer:
Compilation error -> Option A
Quick Check:
final class cannot be subclassed [OK]
Hint: final classes cannot be extended, causing compile errors [OK]
Common Mistakes:
Assuming final class can be extended
Expecting runtime error instead of compile error
Thinking method overriding causes error here
4.
Find the error in the following code snippet:
class Parent {
final void show() {
System.out.println("Parent show");
}
}
class Child extends Parent {
void show() {
System.out.println("Child show");
}
}
medium
A. Parent class cannot have final methods
B. Child class must declare show() as final
C. Child class cannot override final method show()
D. No error, code is valid
Solution
Step 1: Understand final method behavior
Methods declared final in a parent class cannot be overridden in child classes.
Step 2: Analyze Child class method
Child class tries to override final method show(), which causes a compile-time error.
Final Answer:
Child class cannot override final method show() -> Option C
Quick Check:
final methods block overriding [OK]
Hint: final methods cannot be overridden in subclasses [OK]
Common Mistakes:
Thinking final methods can be overridden
Assuming no error in overriding final methods
Confusing final methods with abstract methods
5.
You want to prevent any class from extending your class SecureData, but still allow other classes to use its methods. Which is the best way to do this?
hard
A. Declare the class SecureData as final
B. Make all methods in SecureData final
C. Make SecureData an abstract class
D. Declare SecureData methods as private
Solution
Step 1: Understand the effect of final class
Declaring a class as final prevents any other class from extending it, but allows normal usage of its methods.
Step 2: Evaluate other options
Making methods final prevents overriding but not extending; abstract class requires subclassing; private methods are inaccessible outside the class.
Final Answer:
Declare the class SecureData as final -> Option A
Quick Check:
final class blocks inheritance but allows usage [OK]
Hint: Use final class to block inheritance but allow method use [OK]