Java中的三大特性:继承,封装,多态;

其中封装概念:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。

面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的

对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在

java中通过关键字private,protected和public实现封装。什么是封装?封装把

对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使

用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可

以让程式码更容易理解和维护,也加强了程式码的安全性。

那么怎么去实现封装呢?

使用三个关键字去实现封装:

public :(公有的):可以被该类的和非该类的任何成员访问。

private:(私有的):仅仅可以被该类的成员访问,任何非该类的成员一概不能访问。(主要是隐藏数据来保证数据的安全性);如果需要访问可以调用它的内部类进行访问

protected:(保护的):仅仅可以被子类和类本身还有同一个包里的类访问

具体如何封装如下:

public class Man {
// 对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性
private String name;
private int age;
private Woman wife;
// 对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
  // 方法封装
public void setWife(Woman wife) {
  this.wife = wife;
  }   public String getName() {
  return name;
  }   public void setName(String name) {
  this.name = name;
  }   public int getAge() {
  return age;
  }   public void setAge(int age) {
  this.age = age;
  }  
}   public class Woman {
  // 属性封装
  
private String name;  
private int age;  
private Man husband;  // 方法封装
   public String getName() {
  return name;
  }   public void setName(String name) {
  this.name = name;
  }   public int getAge() {
  return age;
  }   public void setAge(int age) {
  this.age = age;
  }   public Man getHusband() {
  return husband;
  }   public void setHusband(Man husband) {
  this.husband = husband;
  }  
}/**
* 仔细看就会发现,Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问,
*
* 接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,
*
* 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改
*
* 同时对一些对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法
*
* 外界是不能得到Man类的wife属性的
*
*/
上面那例子可能没有突出封装的好处,下面来个超简单的表达下: public class Show {
public static void show(String str) {
System.out.println(str);
}
}上面就是对 System.out.println();的封装。调用的时候: public class Use {
public static void main(String[] args)
{
Show.show("封装");
}
}这样用的时候就不用使:System.out.println("封装");

最新文章

  1. redis 学习笔记(1)
  2. 谈“技术含量”的问题
  3. css中的盒子模型
  4. svn down代码的时候提示“由于目标计算机积极拒绝,无法连接”
  5. Oracle 12c与GoldenGate 12c的一些问答
  6. STS(Spring Tool Suite)建立默认的spring mvc项目
  7. zen-coding for notepad++,前端最佳手写代码编辑器
  8. The FlexSession is invalid问题
  9. use include to read a file
  10. 老李分享:大数据框架Hadoop和Spark的异同 2
  11. SetForegroundWindow Win32-API not always works on Windows-7
  12. SQL server 2012安装中出现的INSTALLSHAREDDIR 和 INSTALLSHAREDWOWDIR 参数具有相同的值问题
  13. C++ Thrift服务端记录调用者IP和被调接口方法
  14. MySQL8.0——Resource Group(资源组)
  15. default construction
  16. 【原创+亲测可用】JS如何区分微信浏览器、QQ浏览器和QQ内置浏览器
  17. iOS开发-为UITableViewCell添加横线
  18. runtime error (运行时错误)
  19. 个人技术博客(1/2)android布局技巧
  20. 【移动端debug-5】可恶的1px万能实现方案

热门文章

  1. UVA - 1343 The Rotation Game (BFS/IDA*)
  2. 畅通工程(自己写的BFS,但后面想了下并查集更好更快)
  3. C#程序性能优化
  4. Python函数-compile()
  5. 关于打包后提示无法连接到mongodb的情况
  6. phpstorm下载和破解
  7. Azure VNet介绍
  8. Rails的静态资源管理(四)—— 生产环境的 Asset Pipeline
  9. java中的死锁现象
  10. 如何利用MATLAB并行计算缩短程序运行时间