Bird
Raised Fist0
Javaprogramming~20 mins

Default access modifier in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Default Access Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of default access modifier in same package
What is the output of this Java code when both classes are in the same package?
Java
class A {
    int number = 10; // default access
}

public class Test {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.number);
    }
}
A10
BCompilation error: number has private access in A
CCompilation error: number is not public in A
DRuntime error
Attempts:
2 left
💡 Hint
Default access allows access within the same package.
❓ Predict Output
intermediate
2:00remaining
Accessing default member from different package
What happens when you try to access a default access member from a class in a different package?
Java
package pkg1;
class B {
    int value = 5; // default access
}

package pkg2;
import pkg1.B;
public class Test {
    public static void main(String[] args) {
        B b = new B();
        System.out.println(b.value);
    }
}
A5
BCompilation error: value is not public in B
CCompilation error: B() has private access in B
DRuntime error: IllegalAccessException
Attempts:
2 left
💡 Hint
Default access members are not visible outside their package.
🔧 Debug
advanced
2:00remaining
Why does this code fail to compile?
This code tries to access a default access method from another package. Identify the cause of the compilation error.
Java
package pkg1;
class C {
    void show() { System.out.println("Hello"); } // default access
}

package pkg2;
import pkg1.C;
public class Test {
    public static void main(String[] args) {
        C c = new C();
        c.show();
    }
}
AClass C is abstract and cannot be instantiated
BClass C is public but method show() is private
CMethod show() has default access and is not visible outside pkg1
DMethod show() is static and should be called on class
Attempts:
2 left
💡 Hint
Check the access level of method show() and package visibility.
🧠 Conceptual
advanced
2:00remaining
Default access modifier and subclassing
If a class with default access modifier is subclassed in the same package, can the subclass access the default members of the superclass?
ANo, default members are only accessible within the same class
BNo, default members are not accessible to subclasses even in the same package
CYes, but only if the subclass is in a different package
DYes, default members are accessible to subclasses in the same package
Attempts:
2 left
💡 Hint
Think about package-level visibility and inheritance.
❓ Predict Output
expert
2:00remaining
Number of accessible members with default access
Given this class with default access members, how many members are accessible from another class in the same package?
Java
class D {
    int a = 1; // default
    private int b = 2;
    protected int c = 3;
    public int d = 4;
}
A3
B4
C2
D1
Attempts:
2 left
💡 Hint
Remember which access modifiers allow access within the same package.

Practice

(1/5)
1. Which statement best describes the default access modifier in Java?
easy
A. It restricts access only to the class itself.
B. It allows access from any package using the default keyword.
C. It allows access only within the same package without using any keyword.
D. It allows access only to subclasses in other packages.

Solution

  1. Step 1: Understand default access modifier meaning

    The default access modifier means no keyword is used before a class, method, or variable, and it restricts access to the same package only.
  2. Step 2: Compare options with definition

    It allows access only within the same package without using any keyword. correctly states it allows access only within the same package and requires no keyword. Other options mention keywords or access outside the package, which is incorrect.
  3. Final Answer:

    It allows access only within the same package without using any keyword. -> Option C
  4. Quick Check:

    Default access = package-only access [OK]
Hint: No keyword means default access is package-only [OK]
Common Mistakes:
  • Thinking default requires a keyword
  • Confusing default with public or private
  • Assuming default allows access from other packages
2. Which of the following is the correct way to declare a class with default access modifier?
easy
A. class MyClass {}
B. private class MyClass {}
C. default class MyClass {}
D. public class MyClass {}

Solution

  1. Step 1: Recall syntax for default access modifier

    Default access means no access keyword is written before the class name.
  2. Step 2: Check each option

    class MyClass {} declares the class without any access keyword, which means default access. Options A and B use explicit keywords, and C uses a non-existent keyword.
  3. Final Answer:

    class MyClass {} -> Option A
  4. Quick Check:

    No keyword = default access [OK]
Hint: No keyword before class means default access [OK]
Common Mistakes:
  • Using 'default' keyword which does not exist in Java
  • Confusing private with default
  • Always using public by habit
3. Consider two classes in the same package:
class A {
    void show() {
        System.out.println("Hello from A");
    }
}

class B {
    public static void main(String[] args) {
        A a = new A();
        a.show();
    }
}

What will be the output when class B is run?
medium
A. Compile-time error: show() has private access
B. Hello from A
C. Compile-time error: class A is not public
D. Runtime error

Solution

  1. Step 1: Analyze access modifiers in the code

    Class A and method show() have default access (no keyword). Both classes are in the same package, so access is allowed.
  2. Step 2: Predict program output

    Since B can access A and its show() method, the program prints "Hello from A" without errors.
  3. Final Answer:

    Hello from A -> Option B
  4. Quick Check:

    Default access allows same package access [OK]
Hint: Default access works within same package [OK]
Common Mistakes:
  • Assuming default means private access
  • Thinking class A must be public to be used
  • Confusing compile-time and runtime errors
4. Given two packages pkg1 and pkg2, and these classes:
package pkg1;
class C {
    void display() {
        System.out.println("Inside C");
    }
}

package pkg2;
import pkg1.C;
public class D {
    public static void main(String[] args) {
        C c = new C();
        c.display();
    }
}

What is the error in this code?
medium
A. Cannot access class C from pkg2 because it has default access
B. Cannot call display() because it is private
C. Cannot import package pkg1
D. No error, code runs fine

Solution

  1. Step 1: Check class C's access modifier and package

    Class C has default access (no keyword) and is in package pkg1, so it is accessible only within pkg1.
  2. Step 2: Check usage of C in pkg2

    Class D in pkg2 tries to create an instance of C and call display(), but C is not visible outside pkg1, causing a compile-time error.
  3. Final Answer:

    Cannot access class C from pkg2 because it has default access -> Option A
  4. Quick Check:

    Default access = package-only visibility [OK]
Hint: Default access blocks cross-package access [OK]
Common Mistakes:
  • Assuming default access allows cross-package use
  • Thinking display() is private
  • Confusing import errors with access errors
5. You have a package tools with classes:
class Helper {
    void assist() {
        System.out.println("Helping...");
    }
}

public class Tool {
    public static void main(String[] args) {
        Helper h = new Helper();
        h.assist();
    }
}

You want to allow only classes inside tools to use Helper and its assist() method, but prevent access from outside. Which is the best way to achieve this?
hard
A. Make Helper and assist() public.
B. Use protected for Helper and assist().
C. Make Helper and assist() private.
D. Keep Helper and assist() with default access (no keyword).

Solution

  1. Step 1: Understand access goals

    You want Helper and assist() accessible only inside the same package (tools) and hidden outside.
  2. Step 2: Match access modifiers to goals

    Default access (no keyword) restricts access to the same package only, which fits the requirement. Public allows all access, private restricts to the class only, and protected allows subclasses and package access.
  3. Final Answer:

    Keep Helper and assist() with default access (no keyword). -> Option D
  4. Quick Check:

    Default access = package-only visibility [OK]
Hint: Default access hides from outside packages [OK]
Common Mistakes:
  • Using public which exposes to all packages
  • Using private which hides even inside package
  • Using protected which allows subclass access outside package
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard