封装的基本概念:
封装是面向对象方法的重要原则,就是把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
什么是封装?
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。
封装定义程序如何引用对象的数据?
封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
封装的优点:
- 良好的封装能够减少耦合
- 类内部的结构可以自由修改
- 可以对成员变量进行更精确的控制
- 隐藏信息,实现细节
封装的实例:
public class Student
{
//该生的姓名、年龄、成绩都是该对象的私有属性
//属性封装
private String name;
private int age;
private int score;
//可以设定姓名、年龄、成绩,也可以获得该生的姓名、年龄、成绩
//方法封装
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
if (age < 0 || age > 120)
{
System.out.println("Error");
}
else
{
this.age = age;
}
}
public void setScore(int score)
{
this.score = score;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
//Student类没有提供getScore方法,这是因为该生不想让自己的成绩被外界访问
//封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法
//例如,name和age属性,Student类都有相应的get和set方法,外界可以通过这些方法访问和修改
//对一些该生不想让外界访问的属性,就不提供其方法。例如Student的score属性,就没有get方法
//外界无法得到Student类的score属性
}
public class Test
{
public static void main(String[] args)
{
Student student = new Student();
student.setName("FOREVER_GWC");
student.setAge(24);
student.setScore(100);
System.out.println(student.getName());
System.out.println(student.getAge());
}
}
封装的作用:
- 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
- 对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。