封装:设置对象信息私有化,隐藏在对象内部,限制外部直接访问或调用,而通过该类所提供的方法来实现内部信息的操作或访问。
public class student
{
private int age ; //private访问修饰符,设置了age属性私有化,只能在本类访问。
public int getAge(){ return age; } //取值
public void setAge(int age) { this.age = age; } //赋值
}
上面设置了属性私有化,又通过方法将其公开操作或访问,如此,是否多此一举呢,这就是为什么要封装?
封装的原因是:面向对象的编程语言的本质核心思想是对客观世界的模拟,所以要遵守客观事件的规则。在客观世界里,客观对象的状态信息都是隐藏在内部的,比如:对象好比我们的家,属性比如我们家的东西,是不允许别人随便的拿和放的。这是客观事实。所以,所有对客观世界模拟的JAVA程序里的对象也要封装。
封装的优点:
1.隐藏信息,实现细节
2.类内部的结构可以自由修改
3.良好的封装能够减少耦合
4.可以对成员变量进行更精确的控制(举例说明)
public class student {
private int age ;
public int getAge() {return age;}
public void setAge(int age) {
//属性age年龄的赋值操作是通过setAge()方法实现,可以在这做进一步精确的控制
if(age > 0 && age < 150)
{this.age = age;}
else
{
System.out.println("年龄不符客观事实!");
this.age = 18 ; //年龄不符,默认为18岁
}
}}
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时保护了数据。对外界而已它的内部细节是隐藏的,暴露外界的只是它访问的方法。