20180304 java面向对象-理解封装思想
class Person
{
String name;
int age;
}
//演示封装
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person;
p.name = "BaiHe";
p.age = 18;
Sysyem.out.println(p.name + ","+p.age);
}
}
eg:
保存联系人功能:
void save(String name,int age,String phoneNumber,String email,String Address...)
因为保存联系人时,可以保存多个信息,那么保存方法就必须设置成具有多个参数的。
发现问题:方法的参数列表出现爆炸式增长。
把联系人的信息看成一个整体。
class LinkMan
{
String name;
int age;
String Address;
String phoneNumber;
String email;
}
上述保存联系人的方法;
void save(Linkman man){}
什么是封装(面向对象的三大特征之一):
1、把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(一个类中)。
2、“信息隐藏”:把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,向外暴露方法,保证外界安全(把所有数据信息隐藏起来,尽可能隐藏多的功能,只向外暴露便捷的方法,以供调用)。
封装的好处:
1、使调用者正确,方便地使用系统功能防止调用者随意修改系统属性
2、提高组件的重用性
3、达到组件之间的低耦合性(当某一个模块实现变化时,只要只要对外暴露 的接口不变,就不会影响到其他模块)。
通过什么来实现隐藏和暴露功功能呢?
高内聚:把该模块的内部数据、功能细节隐藏在模块内部,不允许外界直接干预。
低耦合:该模块只需要给外界暴露少量功能方法。
可以把上述代码改成这样,以体现封装性:
class Person
{
String name;
private int age;//只能在本类中使用age变量。
void setAge(int a)
{
if(a<0)
{
System.out.println("年龄不能为负数");
return;//表示结束方法
}
age = a;
}
}
//演示封装
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.name = "BaiHe";
p.setAge(17);
Sysyem.out.println(p.name + ","+p.age);
}
}