提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、封装的作用是什么?
  • 二、封装的好处
  • 三、封装的步骤
    • 1.引入库
    • 2.private的应用
  • 总结

前言

我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关。具体内部是怎么实现的,我们不需要操心。

需要让用户知道的才暴露出来,不需要让用户知道的全部隐藏起来,这就是封装。说的专业一点,封装就是把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

我们程序设计要追求“高内聚,低耦合”。 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、封装的意义是什么?

封装是指将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

二、封装的好处?

1. 提高代码的安全性。

2. 提高代码的复用性。

3. “高内聚”:封装细节,便于修改内部代码,提高可维护性。

4. “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。

三、封装的步骤

封装的话需要private关键字,private是一个修饰符,可以用来修饰成员(成员变量,成员方法)

被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

1.使用private制作set和get类

代码如下(示例):

/* 学生类 */class Student {//成员变量 String name;private int age; //提供get/set方法 public void setAge(int a) {if(a<0 || a>120) {System.out.println("年龄不符合规定"); }else { age = a; } }public int getAge() {return age; }//成员方法 public void show() {System.out.println(name + "," + age);}} }/* 学生测试类 */public class StudentDemo {public static void main(String[] args) { //创建对象 Student s = new Student(); //给成员变量赋值 s.name = "林青霞"; s.setAge(30); //调用show方法 s.show(); } }

private制作get和set的快捷方法

提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

在这里右击命名-->重构-->封装字段;就这样就完成啦get方法和set方法了。

2.this关键字应用

this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

代码如下:

package com.xxgc.ch01.po;public class Car {//把属性变为私有private String carNo;private String brand;private int price;public String getCarNo() {return carNo;}public void setCarNo(String carNo) {this.carNo = carNo;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}//对外产生get set 方法}

3.this内存原理

this代表当前调用方法的引用,哪个对象调用的方法,this就代表哪一个对象

代码如下(示例):

  public class StudentDemo {public static void main(String[] args) { Student s1 = new Student();s1.setName("张三");Student s2 = new Student();s2.setName("李四"); }}

图解:


总结

这里对文章进行总结:

1. 封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的

2. 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法

3. 封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

以上就是今天要讲的内容,本文仅仅简单介绍了Java的意义和使用,而Java是一门面向对象编程言语也提供了跨平台的程序设计语言。

Java封装如何封装 封装的好处是什么?相关推荐

  1. 初步理解Java的三大特性——封装、继承和多态

    声明:整理自网络,如有雷同,请联系博主处理 一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被 ...

  2. Java面向对象之类和封装

    今天复习了下Java面向对象的封装,下面分享下我的复习心得! 1.使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗? 2.在Java程序中,代码封装带给我们的好处是 ...

  3. 【Java基础篇】封装(Encapsulation)

    [Java基础篇]封装(Encapsulation) 1. 封装含义 2. private(私有)关键字 3. 构造函数 3.1 什么是构造函数 3.2 构造函数的重载 3.3 构造函数的调用 3.4 ...

  4. Java三大特性:封装,继承与多态

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/84592274冷血之心的博客) 目录 (一)封装 封装的定义 封装 ...

  5. Java三大特性(封装、继承、多态)详细讲解

    文章目录 封装 1 封装的好处 2 简单实现 继承 一.类继承简单实现 父类:动物类 子类 猫类 狗类 二.类继承的详细讲解 1. 类继承中成员变量的访问 1.1 成员变量之间的访问 (变量不重名的情 ...

  6. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别) 发布于 2020-4-19| 复制链接 摘记: int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Int ...

  7. java三大特性:封装、继承、多态

    2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...

  8. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  9. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  10. Java三大特性: 封装、继承、多态

    (一)封装 1.什么是封装? 在Java的类中一般有属性和方法,如果我们不想在其他类中new出来本类的对象对其成员变量随意进行修改,那么我们可以将成员变量设成私有的,这样除了自己类中可以访问自己的成员 ...

最新文章

  1. python 打开网页获取cookies_python 携带cookie获取页面内容
  2. 启发式搜索 A*算法的OC 实现
  3. AD画封装的血泪教训:有叉的放在外侧
  4. 网络流(二)——最大流最小割定理
  5. 用 C# 绘制曲线图(Curve图,增加自动适应和多曲线绘制)
  6. Docker视频教程
  7. 视频教程-思科网络工程师CCNP高级路由技术-路由协议
  8. Java技术栈(跳槽,面试必备)
  9. 激活Office 365移动设备管理MDM服务
  10. 【图文教程】Shell基础知识
  11. Excel后缀名 .xls和.xlsx 有什么区别?
  12. (转)魔兽世界里所有钥匙的搜集或制作方法
  13. java.sql.SQLException: 无法转换为内部表示原因及解决办法
  14. 制作macOS Monterey启动U盘
  15. 使用themeleaf模板,background-image: url()中的图片链接如何写?
  16. 世界首台手持式3D智能扫描仪Artec Leo亮相CES Asia
  17. 解决Qt6 Android 开发中 Qtkits 前有黄色感叹号问题
  18. 打通任督二脉,成为OI侠客的秘笈,在!这!里!
  19. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第四周-12(7月23日)
  20. 霍夫变换实现球体追踪opencv

热门文章

  1. Ajax请求导出Excel的问题【ajax不能下载文件】
  2. Excel如何限制单元格只能输入数字?
  3. 2008年分销商八大发展趋势
  4. amr音频格式手机录音音频转MP3的方法
  5. 【转载】C语言,利用网络短信验证码接口实现手机短信发送
  6. 前端html生成图片,HTML5 Canvas:绘制图片
  7. HTML5 canvas 计算文字宽度的方法(measureText)
  8. 2021-08-10校网比赛B题
  9. 【股票策略】使用backtrader测试狗股策略版本4---在版本3的基础上进行代码改进优化
  10. 大学生踏入社会前须领悟五句话(收藏)