您的位置:首页 > 编程语言 > Java开发

java面向对象-理解封装思想

2018-03-19 17:15 344 查看
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);
  }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: