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