Public access modifier in Java - Time & Space Complexity
Let's see how using the public access modifier affects the time it takes for a program to run.
We want to know if making something public changes how long the program works as it grows.
Analyze the time complexity of the following code snippet.
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int sumArray(int[] numbers) {
int sum = 0;
for (int num : numbers) {
sum += num;
}
return sum;
}
}
This class has public methods to add two numbers and to sum all numbers in an array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-each loop that goes through each number in the array.
- How many times: It runs once for every item in the input array.
Explain the growth pattern intuitively.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 additions |
| 100 | About 100 additions |
| 1000 | About 1000 additions |
Pattern observation: The time to sum grows directly with the number of items. More items mean more work.
Time Complexity: O(n)
This means the time to run the sumArray method grows in a straight line with the size of the input array.
[X] Wrong: "Making methods public makes the program slower because anyone can access them."
[OK] Correct: The public access modifier only controls who can use the method, not how fast it runs. The speed depends on what the method does, not its access level.
Understanding how access modifiers relate to performance shows you know both design and efficiency, a great skill to share in interviews.
"What if the sumArray method used recursion instead of a loop? How would the time complexity change?"
Practice
public access modifier mean in Java?Solution
Step 1: Understand the meaning of public
Thepublicmodifier allows access from any other class in any package.Step 2: Compare with other access levels
Other modifiers like private or protected restrict access, but public is fully open.Final Answer:
The class, method, or variable is accessible from anywhere in the program. -> Option AQuick Check:
Public means open access [OK]
- Confusing public with private or protected
- Thinking public restricts access to package only
- Assuming public means only subclass access
Solution
Step 1: Recall Java method declaration syntax
The access modifier comes first, then the return type, then the method name and parentheses.Step 2: Check each option
public void myMethod() {} follows correct syntax:public void myMethod() {}. Others have wrong order or invalid keywords.Final Answer:
public void myMethod() {} -> Option BQuick Check:
Access modifier first, then return type [OK]
- Placing 'public' after 'void'
- Using invalid keywords like 'method'
- Combining multiple access modifiers incorrectly
public class Test {
public int number = 5;
public static void main(String[] args) {
Test obj = new Test();
System.out.println(obj.number);
}
}Solution
Step 1: Understand the public variable access
The variablenumberis public and initialized to 5, so it can be accessed from main.Step 2: Trace the program output
The main method creates an object and printsobj.number, which is 5.Final Answer:
5 -> Option AQuick Check:
Public variable accessed correctly prints 5 [OK]
- Assuming default value 0 instead of initialized 5
- Thinking public causes errors
- Confusing static and instance variables
class Example {
public int value;
}
public class Main {
public static void main(String[] args) {
Example ex = new Example();
ex.value = 10;
System.out.println(ex.value);
}
}Solution
Step 1: Check class and variable access
Class Example is package-private but accessible within the same package. Its public variablevaluecan be accessed.Step 2: Verify main method usage
Main creates Example object, assigns 10 tovalue, and prints it. This is valid.Final Answer:
No error; code will compile and print 10. -> Option CQuick Check:
Public variable accessible within same package [OK]
- Thinking class must be public to access public members
- Confusing variable access with class access
- Assuming private needed for access
Solution
Step 1: Understand class access modifiers
Classes without public are package-private, so accessible only within the package.Step 2: Understand method access modifiers
Methods declared public inside a package-private class are accessible from other classes in the same package.Step 3: Analyze options
Declare the class without public and the method as public. matches the requirement: class package-private, method public. Declare both the class and method as public. makes class public (accessible everywhere). Declare the class as public and the method as private. hides method. Declare the class as private and the method as public. is invalid because classes cannot be private.Final Answer:
Declare the class without public and the method as public. -> Option DQuick Check:
Class package-private + public method = accessible in package [OK]
- Thinking class can be private
- Assuming public class needed for public method
- Confusing method access with class access
Ready to prove it?
Pass the test and this pattern moves unknown
