面向对象之封装(Java)
面向对象是Java学习中最基础,也是最重要的一部分,其中它的三大特征包括:
今天让我们一起来学习面向对象的三个特征之一 封装 吧!
何为封装?
将类的成员属性的访问修饰符规定为私有(private),这样该属性在其它类就不能调用,更不可能被修改。
为什么要使用封装?
定义一个类people,有姓名和财产等属性,默认值是:张三和12000。有show方法,输出姓名和财产。定义一个测试类,修改张三的money为-10000;
public class People{
String name = "张三";
int money = 12000;
public void show(){
System.out.println("姓名为:" + name);
System.out.println("财产为:" + money + "元");
}
}
public class TestPeople{
public static void main(String[] args) {
People p = new People();
p.money = -10000; //修改了张三的金额为-10000
p.show(); //调用show()方法输出
}
}
此案例可以看出类和对象的属性毫无隐蔽性可言,可以被随意修改,这样设计出的程序会有很大的安全性问题。
使用封装的好处
- 便于使用者正确使用系统,防止错误修改属性。
- 有助于系统之间的松耦合,提高系统独立性。
- 提高软件的可重用性。
- 降低了构建大型系统的风险。
封装的实现
- 属性访问修饰符定义为私有:private
- 对外提供get和set方法。
public class People{
private String name = "张三";
private int money = 12000;
public void show(){
System.out.println("姓名为:" + this.getName());
System.out.println("财产为:" + this.getMoney()+ "元");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
public class TestPeople{
public static void main(String[] args) {
People p = new People();
p.setMoney(200000);
p.show();
}
}
输出结果
对属性的封装,在IDEA中有快捷键可以直接生成,键盘按住Alt+Insert,选择Getter and Setter即可自动生成get和set方法,前提条件是必须将属性的访问修饰符设置为私有private,这样才可以对其进行封装操作。在测试类中,通过setMoney()方法对属性值进行设置,通过getMoney()方法对传入的参数值进行输出。这就所谓的封装。这样也大大的提高了系统的安全性。