封装详解
高内聚,低偶合(我们设计一个程序所追求的)
-
封装,记住一句话就可以了:属性私有,用get、set方法
-
先建立一个Student类
//类 public class Student { //属性私有 private String name;//名字 private int id;//学号 private char sex;//性别 private int age; //Eg:我们当然知道年龄不可能无限增加 //提供一些可以操作这个属性的方法! //提供一些public的get、set的方法 //get 获得这个数据 public String getName() { return this.name; } //set 给这个数据设置值 public void setName(String name) { this.name = name; }
-
在建立以个测试类Application 类
public class Application { public static void main(String[] args) { Student s1 = new Student(); // s1.name="";//在public String name时这样是可以的,但是我们一般情况都会把属性私有,这就我们学面向对象的区别,学了面向对象就不会这么搞了,把属性私有化,然后通过设置get、set的方法,再用get、set方法调,去使用这些属性 //在属性私有的时候,就不能直接这样调了 s1.setName("秦疆"); System.out.println(s1.getName()); } }
-
-
使用alt+insert 快捷键获取get和set方法,除了可以快速构建之外,这个快捷到底有什么用呢?
eg:我们用一个Age来说明:我们可以做一些安全性的检查,规避掉一些不合法的
- 现在Student类alt+insert 快捷键获取get和set的方法
public class Student {
//属性私有
private String name;//名字
private int id;//学号
private char sex;//性别
private int age; //Eg:我们当然知道年龄不可能无限增加
//快捷键获取get和set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
//alt+insert 快捷键获取get和set的方法,到底有什么用?我们搞一下age
public int getAge() {
return age;
}
public void setAge(int age) {//我们可以做一些安全性的检查,规避掉一些不合法的
if (age > 120 || age < 0) {//不合法
this.age = 3;
} else {
this.age = age;
}
}
}
-
我们这是来个测试
public class Application { public static void main(String[] args) { Student s1 = new Student(); //s1.setAge(999);//年龄999是不合法的,我们可以通过set方法规避掉,输出一个3,证明他输入的年龄是不合法的 s1.setAge(70);//经过安全性的检查,合法的就正常输出年龄 System.out.println(s1.getAge()); } }
-
封装的意义:
- 提高程序的安全性,保护数据(也就是我们刚举的Age的例子)
- 隐藏代码的实现细节(相当于用户只能用测设类中设置年龄,具体怎么设置,怎么检查,用户是不用管的)
- 统一接口(也就是都是用get和set)
- 系统可维护增加了