Java封装

1 什么是Java封装

Java中的封装是将代码和数据包装到单个单元中的过程。

使用Java的封装,我们可以通过将类的所有数据成员设为私有来在Java中创建一个完全封装的类。然后我们可以使用setter和getter方法来设置和获取其中的数据。

Java Bean类就是完全封装的类的例子。

2 Java封装的优势

  • 通过封装仅提供setter或getter方法,可以将类设置为只读或只写。
  • 封装为你提供了对数据的控制。假设你要设置的id值需要大于100,您可以在setter方法中编写逻辑。当然你也可以编写不将小于0的数值存储在setter方法中的逻辑。
  • 封装是一种在Java中实现数据隐藏的好方法,因为其他类将无法通过私有数据成员访问数据。
  • 封装类易于测试。
  • 标准的IDE开发工具一般都提供了生成getter和setter手段。因此,使用Java创建封装类非常方便快捷。

3 Java封装的示例1

让我们看一下简单的封装示例,封装的setter和getter方法只有一个字段。

Student:

package com.yiidian;
/**
 * 一点教程网: http://www.yiidian.com
 */
//使用Java封装字段的示例.
//私有化成员,及提供getter和setter方法
public class Student{
    //私有化数据成员
    private String name;
    //name的getter方法
    public String getName(){
        return name;
    }
    //name的setter方法
    public void setName(String name){
        this.name=name;
    }
}

Test:

/**
 * 一点教程网:http://www.yiidian.com
 */
//测试类
package com.yiidian;
class Test{
    public static void main(String[] args){
        //创建Student对象
        Student s=new Student();
        //给name字段赋值
        s.setName("yiidian");
        //调用getter方法获取name字段值
        System.out.println(s.getName());
    }
}
编译: javac -d . Test.java
运行: java com.yiidian.Test

输出结果为:

yiidian

4 Java封装的示例2

让我们看一下封装的另一个示例,该示例包含四个带有setter和getter方法的字段。

Account:

package com.yiidian;

/**
 *一点教程网: http://www.yiidian.com
 */ 
class Account {
    //私有化成员
    private long acc_no;
    private String name,email;
    private float amount;
    //提供公开的getter和setter方法 
    public 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;
    }

}  

Test:

/**
 * 一点教程网:http://www.yiidian.com
 */
//测试类
package com.yiidian;
class Test{
    public static void main(String[] args) {
        //创建Account对象
        Account acc=new Account();
        //通过setter给字段赋值
        acc.setAcc_no(7560504000L);
        acc.setName("张三");
        acc.setEmail("zhangsan@yiidian.com");
        acc.setAmount(500000f);
        //通过getter方法获取字段值
        System.out.println(acc.getAcc_no()+" "+acc.getName()+" "+acc.getEmail()+" "+acc.getAmount());
    }
}

输出结果为:

7560504000 张三 zhangsan@yiidian.com 500000.0

 

热门文章

优秀文章