Java 封装
Java封装是将代码和数据包装到一个单元中的
过程,用于例如,混合了几种药物的胶囊。
我们可以通过将类的所有数据成员设为私有来在Java中创建一个完全封装的类。现在,我们可以使用setter和getter方法来设置和获取其中的数据。
Java Bean 类是完全封装的类的示例。
Java封装的优势
通过仅提供setter或getter方法,您可以将类设置为
只读或只写。换句话说,您可以跳过getter或setter方法。
它为您提供了对数据的
控制。假设您要设置的id值仅应大于100,您可以在setter方法中编写逻辑。您可以编写逻辑以免在setter方法中存储负数。
这是在Java中实现
数据隐藏的一种方法,因为其他类将无法访问数据通过私有数据成员。
封装类
易于测试。因此,最好进行单元测试。
标准的IDE提供了生成吸气剂和吸气剂的设施。因此,用Java创建封装的类既轻松又快速。
Java封装的简单示例
让我们看看封装的简单示例,它的setter和getter方法只有一个字段。
文件: Student.java
//A Java class which is a fully encapsulated class.
//It has a private data member and getter and setter methods.package com.lidihuo;
public class Student{
//private data memberprivate String name;
//getter method for namepublic String getName(){
return name;
}
//setter method for namepublic void setName(String name){
this.name=name}
}
文件: Test.java
//A Java class to test the encapsulated class.package com.lidihuo;
class Test{
public static void main(String[] args){
//creating instance of the encapsulated classStudent s=new Student();
//setting value in the name members.setName("vijay");
//getting value of the name memberSystem.out.println(s.getName());
}
}
Compile By: javac -d . Test.javaRun By: java com.lidihuo.Test
输出:
只读类
//A Java class which has only getter methods.public class Student{
//private data memberprivate String college="AKG";
//getter method for collegepublic String getCollege(){
return college;
}
}
现在,您不能更改学院数据成员" AKG"的值。
s.setCollege("KITE");
//will render compile time error
仅写类
//A Java class which has only setter methods.public class Student{
//private data memberprivate String college;
//getter method for collegepublic void setCollege(String college){
this.college=college;
}
}
现在,您无法获得学院的值,只能更改学院数据成员的值。
System.out.println(s.getCollege());
//Compile Time Error, because there is no such methodSystem.out.println(s.college);
//Compile Time Error, because the college data member is private.
//So, it cant be accessed from outside the class
另一个Java封装示例
让我们看一下另一个封装示例,该示例只有四个带有setter和getter方法的字段。
文件: Account.java
//A Account class which is a fully encapsulated class.
//It has a private data member and getter and setter methods.class Account {
//private data membersprivate long acc_no;
private String name,email;
private float amount;
//public getter and setter methodspublic long getAcc_no() {
return acc_no;
}
public void setAcc_no(long acc_no) {
this.acc_no = acc_no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public float getAmount() {
return amount;
}
public void setAmount(float amount) {
this.amount = amount;
}
}
文件: TestAccount.java
//A Java class to test the encapsulated class Account.public class TestEncapsulation {
public static void main(String[] args) {
//creating instance of Account class Account acc=new Account();
//setting values through setter methods acc.setAcc_no(7560504000L);
acc.setName("Sonoo Jaiswal");
acc.setEmail("sonoojaiswal@lidihuo.com");
acc.setAmount(500000f);
//getting values through getter methods System.out.println(acc.getAcc_no()+" "+acc.getName()+" "+acc.getEmail()+" "+acc.getAmount());
}
}
输出:
7560504000 Sonoo Jaiswal sonoojaiswal@lidihuo.com 500000.0