网站建设包括哪些,网站开发人员结构配比,食品包装设计ppt模板,网站建设公司需要具备什么封装概述
为什么需要封装#xff1f;
现实生活中#xff0c;每一个个体与个体之间是有边界的#xff0c;每一个团体与团体之间是有边界的#xff0c;而同一个个体、团体内部的信息是互通的#xff0c;只是对外有所隐瞒。例如#xff1a;我们使用的电脑#xff0c;内部…封装概述
为什么需要封装
现实生活中每一个个体与个体之间是有边界的每一个团体与团体之间是有边界的而同一个个体、团体内部的信息是互通的只是对外有所隐瞒。例如我们使用的电脑内部有CPU、硬盘、键盘、鼠标等等每一个部件通过某种连接方式一起工作但是各个部件之间又是独立的。
面向对象编程语言是对客观世界的模拟客观世界里每一个事物的内部信息都是隐藏在对象内部的外界无法直接操作和修改只能通过指定的方式进行访问和修改。封装可以被认为是一个保护屏障防止该类的代码和数据被其他类随意访问。适当的封装可以让代码更容易理解与维护也加强了代码的安全性。
随着我们系统越来越复杂类会越来越多那么类之间的访问边界必须把握好面向对象的开发原则要遵循“高内聚、低耦合”而“高内聚低耦合”的体现之一 高内聚类的内部数据操作细节自己完成不允许外部干涉 低耦合仅对外暴露少量的方法用于使用
隐藏对象内部的复杂性只对外公开简单的接口。便于外界调用从而提高系统的可扩展性、可维护性。通俗的讲把该隐藏的隐藏起来该暴露的暴露出来。这就是封装性的设计思想。
如何实现封装呢
通俗的讲封装就是把该隐藏的隐藏起来该暴露的暴露出来。那么暴露的程度如何控制呢就是依赖访问控制修饰符也称为权限修饰符来控制。访问控制修饰符来控制相应的可见边界边界有如下
类包子类模块Java9之后引入
在Java中 权限修饰符 如下所示 外部类我们只能使用public和缺省来修饰
成员变量、成员方法、构造器、成员内部类我们可以使用任意的其中一种修饰符
注意事项
protected修饰非静态成员跨包时只能在子类的非静态成员中访问在静态成员中无论是否创建对象都不能访问。
成员变量属性封装
好处
隐藏类的实现细节让使用者只能通过事先预定的方法来访问数据从而可以在该方法里面加入控制逻辑限制对成员变量的不合理访问。还可以进行数据检查从而有利于保证对象信息的完整性。便于修改提高代码的可维护性。主要说的是隐藏的部分在内部修改了如果其对外可以的访问方式不变的话外部根本感觉不到它的修改。例如Java8-Java9String从char[]转为byte[]内部实现而对外的方法不变我们使用者根本感觉不到它内部的修改。
成员变量也称为属性property我们对成员变量的封装也称之为对属性的封装。具体步骤如下
1使用 private 修饰成员变量格式如下: 代码示例 public class Student {//使用 private 修饰成员变量private String name;
}2:提供 getXxx方法 / setXxx 方法可以访问成员变量代码如下
public class Student {//使用 private 修饰成员变量private String name;//获取成员变量值的getXxx方法public String getName() {return name;}//设置成员变量值的setXxx方法public void setName(String name) {this.name name;}}我们观察上面的代码发现this出现在其中但它到底是什么意思了this代码当前对象哪个对象调用这个方法this就代表哪个对象在这里它主要用来区分同名的成员变量和局部变量。
测试代码
public class Test {public static void main(String[] args) {Student student new Student();//设置属性的值student.setName(张三);//获取属性的值System.out.println(名字是 student.getName());}
}
如何解决局部变量与成员变量同名问题
当局部变量与类变量静态成员变量同名时在类变量前面加“类名.当局部变量与实例变量非静态成员变量同名时在实例变量前面加“this.”
当然this还有其他的作用这个我们以后在说..
总结
把该隐藏的隐藏起来该暴露的暴露出来。这就是封装性的设计思想。封装的思想体现在Java的各个方面例如
属性私有化是对属性的封装方法是对独立功能的封装包是对类的封装....
我们可以实际需要来使用Java中的封装性