A class's fields, methods and the class itself may be default. A class's default features are accessible to any class in the same package.
A default method may be overridden by any subclass that is in the same package as the superclass.
protected features are more accessible than default features. Only variables and methods may be declared protected.
A protected feature of a class is available to all classes in the same package(like a default). A protected feature of a class can be available to its subclasses.
Here is an example for a public member variable
public int i;
The following code defines a private member variable and a private member method:
private double j;
private int myMethod(int a, char b) { // ...
To understand the effects of public and private access, consider the following program:
class Test {
int a; // default access
public int b; // public access
private int c; // private access
// methods to access c
void setc(int i) {
c = i;
}
int getc() {
return c;
}
}
public class Main {
public static void main(String args[]) {
Test ob = new Test();
ob.a = 1;
ob.b = 2;
// This is not OK and will cause an error
// ob.c = 100; // Error!
// You must access c through its methods
ob.setc(100); // OK
System.out.println("a, b, and c: " + ob.a + " " + ob.b + " " + ob.getc());
}
}
The output:
a, b, and c: 1 2 100