当前位置: 首页 > news >正文

06627网页制作和网站建设免费宣传平台

06627网页制作和网站建设,免费宣传平台,沈阳视频制作公司,网站优化推广怎么做目录 9.1 为什么需要封装? 而“高内聚,低耦合”的体现之一: 9.2 何为封装性? 9.3 Java如何实现数据封装 9.4 封装性的体现 9.4.1 成员变量/属性私有化 实现步骤: 成员变量封装的好处: 9.4.2 私有化…

目录

9.1 为什么需要封装?

而“高内聚,低耦合”的体现之一:

9.2 何为封装性?

9.3 Java如何实现数据封装

9.4 封装性的体现

9.4.1 成员变量/属性私有化

实现步骤:

成员变量封装的好处:

9.4.2 私有化方法

9.5 练习

练习1:

练习2:


9.1 为什么需要封装?

  • 我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动机吗?
  • 我要开车,我不需要懂离合、油门、制动等原理和维修也可以驾驶。
  • 客观世界里每一个事物的内部信息都隐藏在其内部,外界无法直接操作和修改,只能通过指定的方式进行访问和修改。

随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”。

高内聚、低耦合是软件工程中的概念,也是UNIX 操作系统设计的经典原则。

内聚,指一个模块内各个元素彼此结合的紧密程度;耦合指一个软件结构内不同模块之间互连程度的度量。内聚意味着重用和独立,耦合意味着多米诺效应牵一发动全身。

而“高内聚,低耦合”的体现之一:

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
  • 低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用。

9.2 何为封装性?

所谓封装,就是把客观事物封装成抽象概念的类,并且类可以把自己的数据和方法只向可信的类或者对象开放,向没必要开放的类或者对象隐藏信息。

通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

9.3 Java如何实现数据封装

  • 实现封装就是控制类或成员的可见性范围。这就需要依赖访问控制修饰符,也称为权限修饰符来控制。

  • 权限修饰符:publicprotected缺省private。具体访问范围如下:

修饰符本类内部本包内其他包的子类其他包非子类
private×××
缺省××
protected×
public
  • 具体修饰的结构:
    • 外部类:public、缺省
    • 成员变量、成员方法、构造器、成员内部类:public、protected、缺省、private

9.4 封装性的体现

9.4.1 成员变量/属性私有化

概述:私有化类的成员变量,提供公共的get和set方法,对外暴露获取和修改属性的功能。

实现步骤:

 使用 private 修饰成员变量

private 数据类型 变量名 ;

代码如下:

public class Person {private String name;private int age;private boolean marry;
}

 提供 getXxx方法 / setXxx 方法,可以访问成员变量,代码如下:

public class Person {private String name;private int age;private boolean marry;public void setName(String n) {name = n;}public String getName() {return name;}public void setAge(int a) {age = a;}public int getAge() {return age;}public void setMarry(boolean m){marry = m;}public boolean isMarry(){return marry;}
}

 测试:

public class PersonTest {public static void main(String[] args) {Person p = new Person();//实例变量私有化,跨类是无法直接使用的/* p.name = "张三";p.age = 23;p.marry = true;*/p.setName("张三");System.out.println("p.name = " + p.getName());p.setAge(23);System.out.println("p.age = " + p.getAge());p.setMarry(true);System.out.println("p.marry = " + p.isMarry());}
}

成员变量封装的好处:

  • 让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里面加入控制逻辑,限制对成员变量的不合理访问。还可以进行数据检查,从而有利于保证对象信息的完整性。
  • 便于修改,提高代码的可维护性。主要说的是隐藏的部分,在内部修改了,如果其对外可以的访问方式不变的话,外部根本感觉不到它的修改。例如:Java8->Java9,String从char[]转为byte[]内部实现,而对外的方法不变,我们使用者根本感觉不到它内部的修改。

开心一笑:

A man and woman are in a computer programming lecture. The man touches the woman's breasts."Hey!" she says. "Those are private!"The man says, "But we're in the same class!"

9.4.2 私有化方法

/*** * @Description 自定义的操作数组的工具类* @author 尚硅谷-宋红康 Email:shkstart@126.com* @version**/
public class ArrayUtil {/*** * @Description 求int型数组的最大值* @author 尚硅谷-宋红康* @param arr* @return*/public int max(int[] arr) {int maxValue = arr[0];for(int i = 1;i < arr.length;i++){if(maxValue < arr[i]){maxValue = arr[i];}}return maxValue;}/*** * @Description 求int型数组的最小值* @author 尚硅谷-宋红康* @param arr* @return*/public int min(int[] arr){int minValue = arr[0];for(int i = 1;i < arr.length;i++){if(minValue > arr[i]){minValue = arr[i];}}return minValue;}/*** * @Description 求int型数组的总和* @author 尚硅谷-宋红康* @param arr* @return*/public int sum(int[] arr) {int sum = 0;for(int i = 0;i < arr.length;i++){sum += arr[i];}return sum;}/*** * @Description 求int型数组的元素的平均值* @author 尚硅谷-宋红康* @param arr* @return*/public int avg(int[] arr) {int sumValue = sum(arr);return sumValue / arr.length;}// 创建一系列重载的上述方法// public double max(double[] arr){}// public float max(float[] arr){}// public byte max(byte[] arr){}/*** * @Description 遍历数组* @author 尚硅谷-宋红康* @param arr*/public void print(int[] arr) {for(int i = 0;i < arr.length;i++){System.out.print(arr[i] + "  ");}System.out.println();}/*** * @Description 复制数组arr* @author 尚硅谷-宋红康* @param arr* @return*/public int[] copy(int[] arr) {int[] arr1 = new int[arr.length];for(int i = 0;i < arr.length;i++){arr1[i] = arr[i];}return arr1;}/*** * @Description 反转数组* @author 尚硅谷-宋红康* @param arr*/public void reverse(int[] arr) {for(int i = 0,j = arr.length - 1;i < j;i++,j--){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}/*** * @Description 数组的排序* @author 尚硅谷-宋红康* @param arr* @param desc 指明排序的方式。 ascend:升序    descend:降序*/public void sort(int[] arr,String desc) {if("ascend".equals(desc)){//if(desc.equals("ascend")){for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {
//						int temp = arr[j];
//						arr[j] = arr[j + 1];
//						arr[j + 1] = temp;swap(arr,j,j+1);}}}}else if ("descend".equals(desc)){for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] < arr[j + 1]) {
//						int temp = arr[j];
//						arr[j] = arr[j + 1];
//						arr[j + 1] = temp;swap(arr,j,j+1);}}}}else{System.out.println("您输入的排序方式有误!");}}private void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}/*** * @Description 查找指定的value值在arr数组中出现的位置* @author 尚硅谷-宋红康* @param arr* @param value* @return 返回value值出现的位置 或 -1:未找到*/public int getValue(int[] arr, int value) {//方法:线性查找for(int i = 0;i < arr.length;i++){if(value == arr[i]){return i;}}return - 1;}
}

注意:

开发中,一般成员实例变量都习惯使用private修饰,再提供相应的public权限的get/set方法访问。

对于final的实例变量,不提供set()方法。(后面final关键字的时候讲)

对于static final的成员变量,习惯上使用public修饰。

9.5 练习

练习1:

创建程序:在其中定义两个类:Person和PersonTest类。定义如下:

用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。在PersonTest类中实例化Person类的对象b,调用setAge()和getAge()方法,体会Java的封装性。

练习2:

自定义图书类。设定属性包括:书名bookName,作者author,出版社名publisher,价格price;方法包括:相应属性的get/set方法,图书信息介绍等。

http://www.dinnco.com/news/10393.html

相关文章:

  • 天津网站建设技术支持去哪里找需要推广的app
  • 苏州网站开发公司兴田德润优惠吗湖南专业的关键词优化
  • wordpress api地址搜狗seo怎么做
  • 武汉网站建设熊掌号百度游戏排行榜
  • 做网站包括什么软件静态网站开发
  • php动态网站模板电商运营方案
  • python做的网站多吗最新国际新闻50条简短
  • 泰安有哪些景点windows优化大师下载
  • b2c网站建设平台西安seo技术培训班
  • wordpress应用app主题苏州百度快速排名优化
  • 寿光专业做网站的公司有哪些工作手机
  • 网站原型是产品经理做中视频自媒体平台注册官网
  • 在线制作网址免费seo课程总结怎么写
  • html做网站项目案例网站优化基本技巧
  • 阿里云做网站开发吗百度网站联系方式
  • 如何建设成为营销网站快速建站教程
  • 用asp.net做购物车网站市场调研报告模板
  • 如何做相亲网站郑州网站
  • django做企业级网站营销推广方案模板
  • 做交友网站需要什么b站推广网站入口2023的推广形式
  • wordpress分类目录修改郑州seo外包阿亮
  • 做电影平台网站怎么赚钱的淮安网站seo
  • wordpress随机发布文章aso安卓优化公司
  • 百度推广网站备案关键词林俊杰mp3下载
  • 跨境电商app下载关键词排名手机优化软件
  • 酒店宾馆客栈旅馆古典网站源码 asp源码带后台网站建设网络营销
  • 如何构建网站平台提升关键词排名有哪些方法
  • 开网站开发公司深圳网络推广优化
  • 苹果网站字体用手机制作自己的网站
  • 黄的网站建设微信加精准客源软件