首页 > 其他分享 >Day19:属性封装详解

Day19:属性封装详解

时间:2022-11-22 20:33:08浏览次数:66  
标签:封装 name Students age 访问 详解 Day19 属性

属性封装详解

封装即隐藏一些数据,让外部不能直接访问,而是需要通过一些方法才能设置或者访问。

首先我们来看未封装的属性被外部调用的情况

public class Students{//创建一个学生类
    String name;//定义属性未赋值
    int age;
}
public class Application{
    public static void main(String[] args){
        Students s1=new Students();//学生类实例化
        //属性赋值
        s1.name="工地佬";
        s1.age=-10;
        System.out.println("名字:"+st1.name);
        System.out.println("年龄:"+st1.age);
    }
}
//输出结果为
名字:工地佬
年龄:-10

通过上面的代码我们发现输出的年龄中出现了-10;生活中一个人的年龄不应该出现负数,出现这种错误的原因是因为外部程序能够直接访问到Students类中的属性并加以赋值,为了避免这种错误产生,我们要避免属性能够被直接访问,在Java中在属性前加上“private”关键词可以将属性私有化,使得外部程序不能直接访问。


当我们封装属性时

观察上方代码,我们发现右边Students类中没有封装的属性name在左边中依然可以直接访问,而属性age因为加了private进行修饰成为了类中私有化的属性,左边的程序不能访问age

但是当一个类中的属性不能被访问,那么将毫无意义;而Java中对于封装的属性提供了get、set方法来进行访问

我们通过快捷键可快速生成访问封装属性的方法:alt+insert

此时我们设置封装属性的值并输出:

当们设置并得到了封装属性的值,但我们观察结果发现我们的对象的年龄还是不合法;这个时候我们应该在方法里面加入一些逻辑判断,让我们的方法更加完善。

总结:

  1. 提高程序的安全性,保护数据

  2. 隐藏代码的细节,留给用户的只有一个设置功能,内部的操作无法访问

  3. 统一接口

  4. 提高系统的可维护性

标签:封装,name,Students,age,访问,详解,Day19,属性
From: https://www.cnblogs.com/CQliuwei/p/16916369.html

相关文章

  • 对el-table进行二次封装
    新建组件:<template><divclass="table-container"><el-table:data="tableData"width="100%":height="height":row-style="{height......
  • 一文详解:Quick BI、帆软Fine BI等主流BI软件,各有哪些特点
    近几年,随着数据价值被越来越多企业所重视,商业智能工具市场也迎来了全面大爆发。一时间,市面上各种BI工具层出不穷,导致很多企业在选择BI供应商的时候没了方向,不知道从何决策。......
  • ECharts – 饼状图图代码实例及其注释详解
    mytextStyle={color:"#333",//文字颜色fontStyle:"normal",//italic斜体oblique倾斜fontWeight:"normal",//文字粗细boldbolderl......
  • ABAP CDS注解详解
    系统常量$session.client$session.clientSAP客户端$session.system_date$session.system_date系统时间,SY-DATUM$session.system_language$session.system_l......
  • ECharts – 柱形图代码实例及其注释详解
    mytextStyle={color:"#333",//文字颜色fontStyle:"normal",//italic斜体oblique倾斜fontWeight:"normal",//文字粗细boldbolderl......
  • Docker Compose详解
    使用 DockerComposeDockerCompose是一种用于帮助定义和共享多容器应用程序的工具。使用Compose,我们可以创建一个YAML文件来定义服务,并且使用一个命令,可以启动所有内容......
  • Linux程序编译过程详解
    大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因......
  • C语言abs和labs函数详解和示例
    文章目录​​1、包含头文件​​​​2、函数声明​​​​3、功能说明​​​​4、示例​​​​5、其它说明​​​​6、获取视频教程​​​​7、版权声明​​C语言提供了一系......
  • C语言rand函数生成随机数详解和示例
    文章目录​​1、生成随机数​​​​2、生成一定范围随机数​​​​3、获取视频教程​​​​4、版权声明​​在C/C++程序开发中,会经常用到随机数这个功能,例如编写游戏类(纸牌......
  • 封装适用于CentOS7的MySQL离线包
    1构建一个centos7.6.1810的docker镜像,用于下载MySQL+xtrabackup所需安装包7.6.1810的docker镜像,低版本最小安装,会尽可能把所需的包拉齐。Dockerfile文件如下FROMcent......