Skip to content

Question 3

Create a Balance class and organize it into a package.

  • Demonstrate access protection and importing packages with this class.
  • Write a program to show how classes from different packages interact.

Structure

/BalanceDemo.java
/myfinance/Balance.java
/myfinance/TestInSamePackage.java

Balance Class

myfinance/Balance.java

java
package myfinance;

public class Balance {
    private double privateAmount = 100.00;
    double defaultAmount = 200.00;            // default (package-private)
    protected double protectedAmount = 300.00;
    public double publicAmount = 400.00;

    public void showAll() {
        System.out.println("Inside Balance class:");
        System.out.println("privateAmount = " + privateAmount);
        System.out.println("defaultAmount = " + defaultAmount);
        System.out.println("protectedAmount = " + protectedAmount);
        System.out.println("publicAmount = " + publicAmount);
    }
}

Class in Same Package

myfinance/TestInSamePackage.java

java
package myfinance;

public class TestInSamePackage {
    public void testAccess() {
        Balance b = new Balance();
        // System.out.println("privateAmount = " + b.privateAmount); // Not allowed
        System.out.println("defaultAmount = " + b.defaultAmount);     // Allowed
        System.out.println("protectedAmount = " + b.protectedAmount); // Allowed
        System.out.println("publicAmount = " + b.publicAmount);       // Allowed
    }
}

Class in Another Package

BalanceDemo.java

java
import myfinance.Balance;

class SubBalance extends Balance {
    public void testAccess() {
        // System.out.println("privateAmount = " + privateAmount);   // Not allowed
        // System.out.println("defaultAmount = " + defaultAmount);   // Not allowed
        System.out.println("protectedAmount = " + protectedAmount); // Allowed via inheritance
        System.out.println("publicAmount = " + publicAmount);       // Allowed
    }
}

public class BalanceDemo {
    public static void main(String[] args) {
        Balance b = new Balance();
        System.out.println("From non-subclass, different package:");
        // System.out.println("privateAmount = " + b.privateAmount);   // Not allowed
        // System.out.println("defaultAmount = " + b.defaultAmount);   // Not allowed
        // System.out.println("protectedAmount = " + b.protectedAmount); // Not allowed
        System.out.println("publicAmount = " + b.publicAmount);         // Allowed

        System.out.println("\nFrom subclass in different package:");
        SubBalance sb = new SubBalance();
        sb.testAccess();
    }
}

to Compile and Run

bash
javac myfinance/Balance.java myfinance/TestInSamePackage.java BalanceDemo.java

java BalanceDemo

Output:

From non-subclass, different package:
publicAmount = 400.0

From subclass in different package:
protectedAmount = 300.0
publicAmount = 400.0

Made with ❤️ for students, by a fellow learner.