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 an abstract method in Java?
An abstract method is a method declared without a body (no implementation) using the abstract keyword. It must be implemented by subclasses.
Click to reveal answer
beginner
Can you create an object of a class that contains an abstract method?
No, you cannot create an object of a class that has abstract methods because such a class is abstract and incomplete.
Click to reveal answer
beginner
How do you declare an abstract method in Java?
Use the abstract keyword before the method signature and do not provide a method body. For example: abstract void myMethod();
Click to reveal answer
intermediate
What must a subclass do if its superclass has abstract methods?
The subclass must provide concrete implementations (bodies) for all inherited abstract methods, or it must also be declared abstract.
Click to reveal answer
intermediate
Why use abstract methods in Java?
Abstract methods define a contract for subclasses, ensuring they implement specific behaviors while allowing different implementations.
Click to reveal answer
Which keyword is used to declare an abstract method in Java?
Aprivate
Babstract
Cstatic
Dfinal
✗ Incorrect
The abstract keyword declares a method without a body, requiring subclasses to implement it.
Can an abstract method have a method body in Java?
AOnly if the class is abstract
BYes, always
CNo, never
DOnly if the method is static
✗ Incorrect
Abstract methods cannot have a body; they only declare the method signature.
What happens if a subclass does not implement all abstract methods from its abstract superclass?
AThe subclass must be declared abstract
BThe program runs but throws an error at runtime
CIt compiles without errors
DThe abstract methods are ignored
✗ Incorrect
If a subclass does not implement all abstract methods, it must also be declared abstract.
Can you instantiate an abstract class directly?
ANo, abstract classes cannot be instantiated
BYes, if it has no abstract methods
CYes, but only inside the same package
DOnly if the constructor is public
✗ Incorrect
Abstract classes cannot be instantiated directly because they may have incomplete methods.
Which of the following is true about abstract methods?
AThey are always static
BThey can be private
CThey can have multiple implementations in the same class
DThey must be implemented by subclasses
✗ Incorrect
Abstract methods must be implemented by subclasses to provide specific behavior.
Explain what an abstract method is and why it is useful in Java.
Think about how abstract methods help define rules for subclasses.
You got /4 concepts.
Describe the rules a subclass must follow when inheriting abstract methods.
Focus on subclass responsibilities with abstract methods.
You got /3 concepts.
Practice
(1/5)
1. Which statement about abstract methods in Java is correct?
easy
A. Abstract methods have no body and must be implemented by subclasses.
B. Abstract methods can have a body and be called directly.
C. Abstract methods are only used in interfaces, not classes.
D. Abstract methods can be private and final.
Solution
Step 1: Understand abstract method definition
Abstract methods declare a method signature without a body, forcing subclasses to provide implementation.
Step 2: Check each option against the definition
Abstract methods have no body and must be implemented by subclasses. correctly states abstract methods have no body and must be implemented by subclasses. Options A, B, and D are incorrect because abstract methods cannot have bodies, are used in abstract classes (not only interfaces), and cannot be private or final.
Final Answer:
Abstract methods have no body and must be implemented by subclasses. -> Option A
Quick Check:
Abstract method = no body, must implement [OK]
Hint: Abstract methods have no body and require subclass implementation [OK]
Common Mistakes:
Thinking abstract methods can have a body
Confusing abstract methods with interface methods
Believing abstract methods can be private or final
2. Which of the following is the correct syntax to declare an abstract method in Java?
easy
A. public void abstract display();
B. void abstract display();
C. abstract public void display() {}
D. public abstract void display();
Solution
Step 1: Recall abstract method syntax
Abstract methods must be declared with the keyword abstract, have no body, and specify the return type and method name.
Step 2: Evaluate each option
public abstract void display(); correctly declares an abstract method with no body. public void abstract display(); incorrectly places abstract after void. abstract public void display() {} incorrectly provides a method body ({}). void abstract display(); misses the access modifier and places abstract incorrectly.
Final Answer:
public abstract void display(); -> Option D
Quick Check:
abstract method = abstract + no body [OK]
Hint: Abstract method syntax: 'abstract' before return type, no body [OK]
Common Mistakes:
Adding method body {} to abstract methods
Placing 'abstract' keyword incorrectly
Omitting access modifiers (though optional)
3. What will be the output of the following Java code?
abstract class Animal {
abstract void sound();
}
class Dog extends Animal {
void sound() {
System.out.println("Bark");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.sound();
}
}
medium
A. Animal sound
B. Bark
C. Compilation error due to abstract method
D. Runtime error
Solution
Step 1: Understand class hierarchy and method implementation
Class Animal is abstract with an abstract method sound(). Class Dog extends Animal and provides implementation for sound() that prints "Bark".
Step 2: Analyze main method execution
In main, an Animal reference points to a Dog object. Calling sound() invokes Dog's implementation, printing "Bark".
Final Answer:
Bark -> Option B
Quick Check:
Abstract method implemented in subclass = prints subclass output [OK]
Hint: Abstract method calls subclass implementation at runtime [OK]
Common Mistakes:
Expecting abstract method to run without implementation
Confusing abstract class instantiation
Thinking abstract method prints default text
4. Identify the error in the following Java code:
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing Circle");
}
}
class Square extends Shape {
}
public class Test {
public static void main(String[] args) {
Shape s = new Square();
s.draw();
}
}
medium
A. Method draw() in Circle should be abstract
B. Cannot create object of abstract class Shape
C. Class Square must implement the abstract method draw()
D. No error, code runs fine
Solution
Step 1: Check abstract method implementation in subclasses
Class Shape has abstract method draw(). Circle correctly implements it. Square does not implement draw().
Step 2: Understand consequences of missing implementation
Since Square does not implement the abstract method, it must be declared abstract or implement the method. Otherwise, compilation error occurs.
Final Answer:
Class Square must implement the abstract method draw() -> Option C
Quick Check:
Subclass must implement all abstract methods [OK]
Hint: All abstract methods must be implemented or subclass declared abstract [OK]
Common Mistakes:
Forgetting to implement abstract methods in subclasses
Trying to instantiate abstract classes directly
Misunderstanding abstract method requirements
5. You want to design a Java program where different vehicle types must provide their own startEngine() behavior. Which approach using abstract methods is best to ensure this?
hard
A. Create an abstract class Vehicle with an abstract method startEngine(), then subclass it for each vehicle type implementing startEngine().
B. Create a concrete class Vehicle with a startEngine() method that prints a generic message, and override it in subclasses.
C. Create an interface Vehicle with a default startEngine() method, and override it in subclasses if needed.
D. Create a class Vehicle with a private startEngine() method and call it from subclasses.
Solution
Step 1: Understand requirement for mandatory implementation
The program requires each vehicle type to provide its own startEngine() behavior, so subclasses must be forced to implement this method.
Step 2: Evaluate options for enforcing implementation
Create an abstract class Vehicle with an abstract method startEngine(), then subclass it for each vehicle type implementing startEngine(). uses an abstract class with an abstract method, forcing subclasses to implement startEngine(). Create a concrete class Vehicle with a startEngine() method that prints a generic message, and override it in subclasses. provides a generic method that can be overridden but does not force implementation. Create an interface Vehicle with a default startEngine() method, and override it in subclasses if needed. uses an interface with a default method, which subclasses may skip overriding. Create a class Vehicle with a private startEngine() method and call it from subclasses. uses a private method, which is not accessible to subclasses.
Final Answer:
Create an abstract class Vehicle with an abstract method startEngine(), then subclass it for each vehicle type implementing startEngine(). -> Option A