Please enable JavaScript.
Coggle requires JavaScript to display documents.
Applying Access Modifiers (Modifiers (private (same class), default…
Applying Access Modifiers
Modifiers
private
same class
default (package private) access
same package
public
everyone
protected
same package and subclass
Private Access
Default Access
Protected Access
A member is used without referring to a variable.
A member is used through a variable
Access only inside the subclasses. Composition cannot calls protected members.
Public Access
Can access members from anywhere
Designing Static Methods and Fields
Members that share with all objects
e.g. public class Classe{ public static int n = 10;}
Classe.n calls the member or
Classe c = new Classe();
c.n calls either or
Classe c = null;
c.n calls either because is static member
Trick
Static methods only access static variables
static reference to a nonstatic method
Static variables
specifier static final
creates a constant
reference object constant cannot references other object
e.g private static final ArrayList<String> values = new ArrayList<>();
values.add("changed");//Compiles
values = new ArrayList<>();//Does not compile, values is constant
Static initialization
Example
private static final int NUM_SECONDS_PER_HOUR;
static {
int numSecondsPerMinute = 60;
int numMinutesPerHour = 60;
NUM_SECONDS_PER_HOUR = numSecondsPerMinute * numMinutesPerHour;
static initializer runs when the class is first used
Tip
Try to Avoid Static and Instance Initializers
Static import
ONLY Import static members
e.g. import java.util.Arrays.asList;
List<String> list = asList(array);
doesn't use Arrays.asList
Examples
import static java.util.Arrays; //Does not compile
import static java.util.Arrays.asList;//OK
static import java.util.Arrays.*; //Does not compile
import static statics.A.TYPE;
import static statics.B.TYPE;//Does not compile