The access to classes, constructors, methods and fields are regulated using access modifiers in Java, by signing the access Modifiers, a class or method can control what information or data would be exposed to other classes, the developer can take full advantage of java access modifiers to maximize re-usability and refectory.
Java provides a number of access modifiers to help you set the level of access you want set for classes, fields, methods and constructors in classes. A member has package or default accessibility when no accessibility modifier is specified.
- Public variables – Visible to all classes.
- Protected variables – Visible only to these classes which they belong, and any subclasses.
- Friendly variables, the default – No modifiers are needed, Visible to the package.
- Private variables – Visible only to the class to which they belong.
More directly perceived through the senses:
Modifier | Class | Package | Subclass | World public | Y | Y | Y | Y protected | Y | Y | Y | N no modifier | Y | Y | N | N private | Y | N | N | N
For access modifiers public and private, its easy to understand hence we wouldn’t take examples on here, below is a code piece to demonstrate whats the difference between Access Modifiers Protected and Friendly.
package com.asjava; public class TestOne { protected static String protectedStr = "protected"; static String friendlyStr = "friendly"; }
package com.asjava.ts; import com.asjava.TestOne; public class TestOneSon extends TestOne { public static void main(String[] args){ //correct to use, class TestOneSon is subclass of TestOne System.out.print(TestOne.protectedStr); //incorrect to use, friendly field is only visible to access in same package System.out.print(TestOne.friendlyStr); } }
Nice overview !