Understanding Encapsulation and Interfaces in Java
This article explains Java encapsulation and interfaces, illustrating how access modifiers like public and private control object members, improve usability and safety, and provides a complete code example with a Human class, usage guidelines, and a practical exercise.
Objects represent concrete entities while classes define their types; an object contains state (data members) and behavior (methods). Inside an object, this accesses its members, and outside you use object.field or object.method().
Encapsulation and Interfaces
Encapsulation hides implementation details and exposes only a limited external interface, similar to how a flashlight hides its internal circuitry and offers only a switch and a charging port for user interaction, thereby improving usability and safety.
In Java, encapsulation is achieved through access modifiers:
public : member is visible externally and forms part of the class's interface.
private : member is hidden from external code and can only be used internally.
protected : (related to inheritance, discussed later).
The following code demonstrates these concepts:
public class Test {
public static void main(String[] args) {
Human aPerson = new Human(160);
System.out.println(aPerson.getHeight());
aPerson.growHeight(170);
System.out.println(aPerson.getHeight());
aPerson.repeatBreath(100);
}
}
class Human {
/** constructor */
public Human(int h) {
this.height = h;
System.out.println("I'm born");
}
/** accessor */
public int getHeight() {
return this.height;
}
/** mutator */
public void growHeight(int h) {
this.height = this.height + h;
}
/** encapsulated, for internal use */
private void breath() {
System.out.println("hu...hu...");
}
/** call breath() */
public void repeatBreath(int rep) {
int i;
for(i = 0; i < rep; i++) {
this.breath();
}
}
private int height; // encapsulated, for internal use
}Only the public methods getHeight(), growHeight() and repeatBreath() are accessible from outside the Human class; the private field height and method breath() remain hidden.
If an external class tries to access aPerson.height, the compiler reports an error such as:
Test.java:6: height has private access in Human
System.out.println(aPerson.height);
^
1 errorThis demonstrates why data members should generally be declared private and accessed through public getters/setters, protecting the internal state and allowing the class designer to enforce invariants.
Class Visibility
In a single .java file, only one class may be declared public. Other classes without the keyword have package‑level visibility, a topic covered in the package discussion.
Exercise
Encapsulate a Torch class that represents a flashlight. The public interface should include methods to turn the torch on/off and to charge it, while the internal state (e.g., battery level) remains private.
Summary
Encapsulation uses private and public modifiers to hide internal details and expose a clean interface, enhancing both usability and safety of Java classes.
Encapsulation and interfaces
private, public access modifiers
Original source: cnblogs.com/vamei/archive/2013/03/27/2982209.html
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Captain
Focused on Java technologies: SSM, the Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading; occasionally covers DevOps tools like Jenkins, Nexus, Docker, ELK; shares practical tech insights and is dedicated to full‑stack Java development.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
