java有三大特性,继承、封装、多态,封装便是其中之一
一.vo类
在说封装之前先来说一个特殊的类,叫vo类,下面这段代码便是一个vo类,我们可以看出,这个特殊的类中只含有private的属性,get和set方法:
public class Student{
private int age;
private String id;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二.封装
其实创建上述的那个vo类的过程就叫做封装。
那么这个类是怎么定义出来的呢?这么多个方法又是怎么操作出来的呢?创建的操作如下:
首先创建一个含有private修饰符的属性的类:
public class Student{
private int age;
private String id;
private String name;
}
然后在类中的空白处右键点击,然后选择Source中的Generate Getters and Setters:
然后在下面的窗口中选择select all,然后点击ok,然后一个封装过程就完成了。
三.封装的作用
用另一个类对这个类中的属性赋值,其实最简单的方法就是在属性前加public修饰符,然后在另一个类中直接创建对象便可以修改了,但是为什么要弄这么麻烦的一个封装过程呢?其实它的作用就是起到一个限制作用,假设一个类中的属性如下,然后在另一个类中修改:
//含有属性的类
public class Student{
public int age;
public String id;
public String name;
}
//在该类中修改
public class Test{
new Student().age=1000;
}
但是我们都知道,年龄age不可能有人活到1000岁,所以这就导致了一个问题,其他类可以对此类中的变量任意赋值,无论是否合理,所以对类的封装就发挥了它的作用,像如下的代码:
public class Student{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>1 && age<150) {
this.age = age;
}else {
System.out.println("超出赋值范围");
}
}
}
大于150的值是不能被其他类赋给这个变量的,这就起到了很好的限制其他程序员随意修改值的弊端,假如有其他类对其赋超过150的值,运行结果如下:
public class Test{
public static void main(String[] args) {
Student student = new Student();
student.setAge(200);
System.out.println(student.getAge());
}
}