📖 Scenario: You are creating a simple calculator program that can add numbers. Sometimes you want to add two numbers, and other times you want to add three numbers.
🎯 Goal: Build a Java program that uses method overloading to add two or three numbers using the same method name add.
📋 What You'll Learn
Create a class called Calculator
Create two add methods in the Calculator class: one that adds two integers, and one that adds three integers
Create a main method to test both add methods
Print the results of adding two numbers and three numbers
💡 Why This Matters
🌍 Real World
Method overloading is used in many programs to perform similar actions with different inputs, like calculators, printers, or data processors.
💼 Career
Understanding method overloading is important for writing clean, reusable code and is a common skill asked in programming interviews.
Progress0 / 4 steps
1
Create the Calculator class with the main method
Create a public class called Calculator and add a public static void main(String[] args) method inside it.
Java
Hint
Start by writing the class and main method exactly as shown.
2
Add the first add method for two integers
Inside the Calculator class but outside the main method, create a public static method called add that takes two int parameters named a and b and returns their sum as an int.
Java
Hint
Write a method named add that returns the sum of two integers.
3
Add the second add method for three integers
Inside the Calculator class but outside the main method, create another public static method called add that takes three int parameters named a, b, and c and returns their sum as an int.
Java
Hint
Create another add method with three parameters to add three numbers.
4
Call both add methods and print the results
Inside the main method, call add(5, 10) and store the result in an int variable named sumTwo. Then call add(3, 7, 2) and store the result in an int variable named sumThree. Finally, print both sumTwo and sumThree using System.out.println.
Java
Hint
Call both add methods with the given numbers and print the results.
Practice
(1/5)
1.
What is method overloading in Java?
easy
A. Changing the return type of a method only
B. Having multiple classes with the same name
C. Using inheritance to override methods
D. Having multiple methods with the same name but different parameters
Solution
Step 1: Understand method naming
Method overloading means methods share the same name.
Step 2: Check parameter differences
They differ by number or type of parameters, not just return type.
Final Answer:
Having multiple methods with the same name but different parameters -> Option D
Quick Check:
Same name + different parameters = method overloading [OK]
Hint: Same method name, different parameters means overloading [OK]
Common Mistakes:
Confusing overloading with overriding
Thinking return type alone overloads method
Mixing class names with method names
2.
Which of the following is a correct method overloading example in Java?
class Test {
void show(int a) {}
void show(int a, int b) {}
void show(int a) {}
}
easy
A. This code compiles without errors
B. Duplicate method show(int a) causes a compile error
C. Method names must be different to overload
D. Return types must differ for overloading
Solution
Step 1: Check method signatures
Two methods have the same name and same parameter list: show(int a).
Step 2: Understand overloading rules
Overloading requires different parameter lists; duplicate signatures cause errors.
Final Answer:
Duplicate method show(int a) causes a compile error -> Option B
Quick Check:
Same parameters = error, not overloading [OK]
Hint: Parameters must differ; identical signatures cause errors [OK]
Common Mistakes:
Assuming return type difference overloads method
Ignoring duplicate parameter lists
Thinking method names must differ
3.
What is the output of this Java code?
class Demo {
void print(int a) {
System.out.println("int: " + a);
}
void print(String s) {
System.out.println("String: " + s);
}
}
public class Main {
public static void main(String[] args) {
Demo d = new Demo();
d.print(5);
d.print("hello");
}
}
medium
A. int: 5\nString: hello
B. String: 5\nint: hello
C. int: 5\nint: hello
D. Compilation error
Solution
Step 1: Identify method calls and parameters
First call passes int 5, second call passes String "hello".
Step 2: Match calls to overloaded methods
print(int) prints "int: 5", print(String) prints "String: hello".
Final Answer:
int: 5
String: hello -> Option A
Quick Check:
Correct method chosen by parameter type [OK]
Hint: Method chosen by argument type matches parameter [OK]
Common Mistakes:
Mixing output order
Assuming wrong method called
Expecting compile error
4.
Find the error in this code snippet:
class Calculator {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }
int add(int a, int b) { return a - b; }
}
medium
A. Duplicate method add(int a, int b) with different body causes error
B. Overloading requires different method names
C. Return type difference causes error
D. No error, code compiles fine
Solution
Step 1: Check method signatures
Two methods have signature add(int a, int b) but different bodies.
Step 2: Understand overloading rules
Overloading requires unique parameter lists; duplicate signatures cause errors regardless of body.
Final Answer:
Duplicate method add(int a, int b) with different body causes error -> Option A
Quick Check:
Same parameters = duplicate method error [OK]
Hint: Same parameters, different body = error, not overloading [OK]
Common Mistakes:
Thinking different return types fix duplicates
Ignoring duplicate parameter lists
Confusing overloading with overriding
5.
Consider this class:
class Converter {
int convert(String s) { return Integer.parseInt(s); }
int convert(int i) { return i * 2; }
int convert(String s, int base) { return Integer.parseInt(s, base); }
}
public class Main {
public static void main(String[] args) {
Converter c = new Converter();
System.out.println(c.convert("10"));
System.out.println(c.convert(10));
System.out.println(c.convert("10", 16));
}
}
What is the output when this code runs?
hard
A. Runtime error parsing string
B. 10\n20\n10
C. 10\n20\n16
D. Compilation error due to ambiguous methods
Solution
Step 1: Analyze each method call
convert("10") parses string "10" as decimal 10; convert(10) doubles 10 to 20; convert("10", 16) parses hex "10" as decimal 16.
Step 2: Determine output values
Outputs are 10, 20, and 16 respectively.
Final Answer:
10
20
16 -> Option C
Quick Check:
Overloaded methods handle inputs correctly [OK]
Hint: Match method by parameters; parseInt with base converts hex [OK]
Common Mistakes:
Confusing hex parsing result
Expecting compile or runtime errors
Mixing method outputs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.