封装

2023-11-18

1、生活中封装:
快递,外卖,电脑机箱…
2、java中封装:
隐藏类内部的细节,对外部提供一些访问细节的方法。
3、封装例子:
方法,类,属性。
4、封装好处:
提高代码复用性,提高代码安全性,提高代码易用性
5、实现步骤:
1)、隐藏内部细节(属性)
2)、提供一些可以访问方法(getter/setter方法)
6、getter:
读方法语法

public 数据类型 get属性名(){
return 属性;
}
public:getter方法必须要由public修饰
数据类型:要与封装属性的属性类型要一致
get属性名:命名规则是get属性名,属性名首字母要大写。

7、setter:
写方法语法

public void set属性名(参数类型 参数名){
属性名 = 参数名;
}
void:该方法用于给属性赋值,所以没有返回值。
set属性名:命名规则是set属性名,属性名首字母要大写。
参数类型 参数名:参数类型要与封装属性的类型一致,参数名可以与属性名一致也可以不一致。
属性名 = 参数名:将传入参数中值赋给属性空间。

class Person {

    private String name = "刘备";//显式赋值
    private int age = 18;

    public void show() {
        System.out.println(name + "..." + age);//刘备...18
    }

    //getter
    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    //setter
    public void setAge(int newAge) {
        if (newAge > 0 && newAge <= 120) {//如果年龄在0~120,则录入成功。
            age = newAge;
        }
    }

    public void setName(String newName) {
        name = newName;
    }
}

public class Demo5_封装 {

    public static void main(String[] args) {
        Person p = new Person();
        //问题:18和刘备的数据是由用户提供,这时出现用户误操作问题。
        //解决:使用封装
        //步骤:1、隐藏内部细节(使用private修饰属性,该属性只能在本类中使用,其他类不能使用)。
        //     2、提供一些可以访问细节的方法(getter/setter,读方法/写方法,可以只有读/写方法)
        //p.age = 180;
        //p.name = "刘备";
        //System.out.println(p.age + "..." + p.name);//180...刘备
        p.setName("曹操");
        p.setAge(200);

        p.show();//曹操...200
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

封装 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • layer.js open 隐藏滚动条

    img echart trand click function var host this data host var role this data role console log host host console log window
  • 华为防火墙NAT

    目录 NAT分类 黑洞路由 Server map 表 NAT分类 在内外网的边界 流量有出 入两个方向 所以NAT技术包含源地址转换和目的地址转换 一般情况下 源地址转换主要解决内部局域网计算机访问internet的场景 而目标地址转换主要
  • Qt/C++项目架构经验总结

    一 通用规则 除了极小的微型demo级别项目外 其余项目建议用pri分门别类不同文件夹存放代码文件 方便统一管理和查找 同类型功能的类建议统一放在一起 如果该目录下代码文件数量过多 也建议拆分多个目录存放 比如就3 5个界面的项目 统一搞个
  • Android 编码规范

    文章目录 背景 制定规范 一 开发环境 二 命名规范 1 资源命名 2 包命名 3 方法命名 4 类命名 5 变量 6 常量 二 编码规范 三 注释规范 1 类注释 2 方法注释 2 变量注释 3 区块注释 四 代码提交规范 五 其他须遵循
  • 快乐的强化学习4——Policy Gradients及其实现方法

    快乐的强化学习4 Policy Gradients及其实现方法 学习前言 简介 举例应用 神经网络的构建 动作的选择 神经网络的学习 具体实现代码 学习前言 刚刚从大学毕业 近来闲来无事 开始了机器学习的旅程 深度学习是机器学习的重要一环
  • [论文解读] 多机器人系统动态任务分配综述

    https www emerald com insight content doi 10 1108 IR 04 2020 0073 full html 多机器人 多智能体 动态环境 任务分配 决策 动态任务调度策略 该文章主要是想对目前st
  • jmeter+maven

    1 创建maven Project jmeter test 2 文件 1 src test目录下创建jmeter文件 2 src test jmeter目录下创建xx项目名文件 3 xxx jmx 脚本文件及依赖文件 放在src test
  • ajax post微信接口,微信小程序的ajax数据请求wx.request介绍

    微信小程序的ajax数据请求wx request介绍 微信小程序的ajax数据请求 很多同学找不到api在哪个位置 这里单独把小程序的ajax请求给列出来 微信小程序的请求就是wx request这个api wx request 一些对象参
  • 语音增强技术

    我的书 淘宝购买链接 当当购买链接 京东购买链接 在人机交互的场景中 麦克风采集到的人声不可避免的混杂外界噪声 可以通过信号处理的方法在处理前将其去除 以获得 纯净 的语音信号 这一过程称为降噪或者语音增强 从麦克风数量上分为单麦克降噪 多
  • C++程序员视角下的Rust语言

    自上世纪80年代初问世以来 C 就是一门非常重要的系统级编程语言 到目前为止 仍然在很多注重性能 实时性 偏硬件等领域发挥着重要的作用 C 和C一样 可以通过指针直接操作内存 这给了程序员的编程提供了相当大的自由度 但指针就是一把双刃剑 给
  • Spring控制反转和依赖注入的好处

    要了解控制反转 Inversion of Control 我觉得有必要先了解软件设计的一个重要思想 依赖倒置原则 Dependency Inversion Principle 什么是依赖倒置原则 假设我们设计一辆汽车 先设计轮子 然后根据轮
  • Leetcode刷题316. 去除重复字母

    给你一个字符串 s 请你去除字符串中重复的字母 使得每个字母只出现一次 需保证 返回结果的字典序最小 要求不能打乱其他字符的相对位置 注意 该题与 1081 https leetcode cn com problems smallest s
  • 1144. 递减元素使数组呈锯齿状

    1144 递减元素使数组呈锯齿状 题目描述 给你一个整数数组 nums 每次 操作 会从中选择一个元素并 将该元素的值减少 1 如果符合下列情况之一 则数组 A 就是 锯齿数组 每个偶数索引对应的元素都大于相邻的元素 即 A 0 gt A
  • 巧用Maya轴心操作技巧,让工作事半功倍!

    Maya 是一款专业的三维软件 可以用于创建规模宏大的世界 复杂的角色和炫酷的特效 Maya的用户遍布动画行业 影视特效 广告和片头 平面设计行业 用户数量十分庞大 本文分享了maya轴心操作的小技巧 让设计师工作事半功倍 一起来看看吧 一
  • EOFError: end of file reached

    logstash config email have error 2018 06 13T18 26 21 299 ERROR logstash outputs email Something happen while delivering
  • C/C++语言中字符串多行书写方法

    在C C 语言中 可能我们要书写的一个字符串太长了 放在一行上影响代码的可读性 这时我们就需要多行书写了 字符串多行书写有两种方法 在字符串换行处加一个反斜杠 下一行前不能有空格或者Tab键 使用双引号 程序示例 01 02 Introdu
  • Python求解,汉诺塔问题(附原代码和注释)

    def hanoi n a b c if n 1 print a gt c 最终目标是把A处移到C处 else hanoi n 1 a c b 把A处上层的n 1个移动到B处 此时A处即为A处 B处即为目标终点C hanoi 1 a b c
  • 性能测试工具 Locust

    目录 1 Locust的特点 2 脚本编写 class HttpLocust Locust class TaskSet 发出 HTTP 请求 使用 HTTP client 手动控制请求是成功还是失败 3 脚本增强 关联 参数化 检查点 断言
  • Android HAL 层框架分析(一)

    作为一个搞android驱动或者说搞底层的人 我觉得对于hal那是必须要掌握的 而且必须达到一定深度 于是我总结了一下 将整个自己的分析思路写下来 主要是看android源代码 根据源代码得到的思路 看源代码比看什么著作书籍都管用 andr
  • 封装

    1 生活中封装 快递 外卖 电脑机箱 2 java中封装 隐藏类内部的细节 对外部提供一些访问细节的方法 3 封装例子 方法 类 属性 4 封装好处 提高代码复用性 提高代码安全性 提高代码易用性 5 实现步骤 1 隐藏内部细节 属性 2