Bird
Raised Fist0
Javaprogramming~20 mins

Protected access modifier in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Protected Access Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing protected member in subclass

What is the output of this Java code?

Java
package pack1;

public class Parent {
    protected String message = "Hello from Parent";
}

package pack1;

public class Child extends Parent {
    public void printMessage() {
        System.out.println(message);
    }
}

package pack1;

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
        c.printMessage();
    }
}
AHello from Parent
BNo output
CRuntime error: NullPointerException
DCompilation error: message has protected access in Parent
Attempts:
2 left
💡 Hint

Remember that protected members are accessible in subclasses within the same package.

❓ Predict Output
intermediate
2:00remaining
Accessing protected member from different package subclass

What will be the output of this code when run?

Java
package pack1;

public class Parent {
    protected String message = "Hello from Parent";
}

package pack2;

import pack1.Parent;

public class Child extends Parent {
    public void printMessage() {
        System.out.println(message);
    }
}

package pack2;

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
        c.printMessage();
    }
}
ACompilation error: message has protected access in Parent
BRuntime error: NullPointerException
CHello from Parent
DNo output
Attempts:
2 left
💡 Hint

Protected members are accessible in subclasses even if they are in different packages.

❓ Predict Output
advanced
2:00remaining
Accessing protected member from non-subclass in different package

What will happen when this code runs?

Java
package pack1;

public class Parent {
    protected String message = "Hello from Parent";
}

package pack2;

import pack1.Parent;

public class NonChild {
    public void printMessage() {
        Parent p = new Parent();
        System.out.println(p.message);
    }
}

package pack2;

public class Test {
    public static void main(String[] args) {
        NonChild nc = new NonChild();
        nc.printMessage();
    }
}
ANo output
BCompilation error: message has protected access in Parent
CRuntime error: NullPointerException
DHello from Parent
Attempts:
2 left
💡 Hint

Protected members are not accessible from non-subclasses in different packages.

❓ Predict Output
advanced
2:00remaining
Accessing protected member via object reference of superclass

What is the output of this code?

Java
package pack1;

public class Parent {
    protected String message = "Hello from Parent";
}

package pack1;

public class Child extends Parent {
    public void printMessage() {
        Parent p = new Parent();
        System.out.println(p.message);
    }
}

package pack1;

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
        c.printMessage();
    }
}
ACompilation error: message has protected access in Parent
BRuntime error: NullPointerException
CNo output
DHello from Parent
Attempts:
2 left
💡 Hint

Protected members are accessible within the same package regardless of reference type.

🧠 Conceptual
expert
2:00remaining
Protected access modifier and package boundaries

Which statement about the protected access modifier in Java is TRUE?

AA protected member is accessible only within its own package and not by subclasses in other packages.
BA protected member is accessible by any class in any package without restriction.
CA protected member is accessible within its own package and also by subclasses even if they are in different packages.
DA protected member is accessible only by subclasses in the same package, but not in different packages.
Attempts:
2 left
💡 Hint

Think about how protected members behave with subclasses and packages.

Practice

(1/5)
1. Which statement best describes the protected access modifier in Java?
easy
A. It allows access only within the same class.
B. It allows access only within the same package, not subclasses outside.
C. It allows access from any class anywhere.
D. It allows access within the same package and to subclasses outside the package.

Solution

  1. Step 1: Understand protected access scope

    The protected modifier allows access to members within the same package and also to subclasses even if they are in different packages.
  2. Step 2: Compare with other access levels

    Private restricts access to the same class only, public allows everywhere, and default (package-private) allows only within the same package but not subclasses outside.
  3. Final Answer:

    It allows access within the same package and to subclasses outside the package. -> Option D
  4. Quick Check:

    Protected = same package + subclasses outside [OK]
Hint: Protected means package + subclass access [OK]
Common Mistakes:
  • Confusing protected with private
  • Thinking protected is public
  • Assuming protected restricts subclasses outside package
2. Which of the following is the correct way to declare a protected method in Java?
easy
A. private protected void myMethod() {}
B. public protected void myMethod() {}
C. protected void myMethod() {}
D. void protected myMethod() {}

Solution

  1. Step 1: Recall Java access modifier syntax

    In Java, access modifiers come before the return type and method name. Only one access modifier is allowed per method declaration.
  2. Step 2: Identify valid syntax

    protected void myMethod() {} correctly uses protected followed by the return type void and method name. Other options combine modifiers incorrectly or place them in wrong order.
  3. Final Answer:

    protected void myMethod() {} -> Option C
  4. Quick Check:

    Single access modifier before return type [OK]
Hint: Use only one access modifier before return type [OK]
Common Mistakes:
  • Combining multiple access modifiers
  • Placing modifiers after return type
  • Using invalid modifier combinations
3. Consider the following code in two packages:
package pkg1;
public class Parent {
    protected int value = 10;
}

package pkg2;
import pkg1.Parent;
public class Child extends Parent {
    public int getValue() {
        return value;
    }
}

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
        System.out.println(c.getValue());
    }
}

What is the output when running Test.main?
medium
A. 0
B. 10
C. Compilation error due to access
D. Runtime error

Solution

  1. Step 1: Check access of protected member in subclass outside package

    The value field is protected in Parent. The Child class extends Parent and accesses value in getValue(). This is allowed because protected permits subclass access even outside the package.
  2. Step 2: Trace the output of getValue()

    The method returns value which is initialized to 10. So, printing c.getValue() outputs 10.
  3. Final Answer:

    10 -> Option B
  4. Quick Check:

    Protected allows subclass access outside package [OK]
Hint: Protected allows subclass access outside package [OK]
Common Mistakes:
  • Thinking protected blocks subclass outside package
  • Expecting compilation error
  • Confusing default access with protected
4. Identify the error in the following code:
package pkg1;
public class Parent {
    protected int data = 5;
}

package pkg2;
import pkg1.Parent;
public class Other {
    public void printData() {
        Parent p = new Parent();
        System.out.println(p.data);
    }
}
medium
A. Cannot access protected member from non-subclass in different package
B. No error, code runs fine
C. Syntax error in import statement
D. Cannot create instance of Parent class

Solution

  1. Step 1: Analyze access of protected member from non-subclass outside package

    The class Other is not a subclass of Parent and is in a different package. Accessing p.data is not allowed because protected members are accessible only within the same package or subclasses outside the package.
  2. Step 2: Identify the error type

    This causes a compilation error due to illegal access of a protected member from a non-subclass outside the package.
  3. Final Answer:

    Cannot access protected member from non-subclass in different package -> Option A
  4. Quick Check:

    Protected blocks non-subclass outside package [OK]
Hint: Protected blocks non-subclass outside package [OK]
Common Mistakes:
  • Assuming protected allows all package access
  • Confusing subclass and non-subclass access
  • Ignoring package differences
5. You have a class Animal in package zoo with a protected method makeSound(). You want to allow only subclasses in any package to use makeSound(), but prevent other classes in the same package from calling it. How can you achieve this?
hard
A. Declare makeSound() as protected and move other classes out of the package.
B. Declare makeSound() as protected and make other classes subclasses of Animal.
C. Declare makeSound() as private and provide a public wrapper method.
D. Declare makeSound() as protected and keep other classes in the same package.

Solution

  1. Step 1: Understand protected access within package and subclasses

    Protected members are accessible to all classes in the same package and to subclasses outside the package. So, classes in the same package can call makeSound() even if they are not subclasses.
  2. Step 2: Restrict access to only subclasses

    To prevent other classes in the same package from accessing makeSound(), you must move those classes to a different package. Then only subclasses (in any package) can access the protected method.
  3. Final Answer:

    Declare makeSound() as protected and move other classes out of the package. -> Option A
  4. Quick Check:

    Protected allows package + subclass; move non-subclass classes out [OK]
Hint: Protected allows package access; move classes to restrict [OK]
Common Mistakes:
  • Thinking protected blocks same-package classes
  • Making other classes subclasses to restrict access
  • Using private which blocks subclasses
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