setXxx getXxx 封装

1.封装介绍

封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。

2.封装的理解和好处

(1)隐藏实现细节   方法(连接数据库)<-----调用(传入参数...)

只负责调用,封装的细节不考虑

(2)可以对数据进行验证,保证安全合理。

3.封装实现的步骤

(1)将属性进行私有化private(不能直接修改属性)

(2)提供一个公共的(public)set方法,用于对属性判断并赋值

public void setXxx(类型,参数名){Xxx表示某个属性//加入数据验证的业务逻辑属性=参数名}

(3)提供一个公共的(public)get方法,用于获取属性的值

public  数据类型 getXxx(){//权限判断,Xxx某个属性return xx}}

4.快速入门案例

代码:

package com.hspedu.encap;public class Encapsulation01 {public static void main(String[] args) {Person person = new Person();
//        谁调用我this指向谁person.setName("jac");person.setAge(30);person.setSalary(30000);System.out.println(person.info());}
}class Person {public String name; //名字公开private int age;//年龄私有化private double salary;//工资私有化//    自己写setXxx和getXxx太慢了
//    然后根据要求来完善我们的代码public String getName() {return name;}public void setName(String name) {
//        加入对数据的验证if (name.length() >= 2 && name.length() <= 6) {this.name = name;} else {System.out.println("名字的长度,需要(2-6)字符");this.name = "无名人";}}public int getAge() {return age;}public void setAge(int age) {
//        判断if (age >= 1 && age <= 120) {this.age = age;} else {System.out.println("你设置的年龄不对,需要在1-120.给默认年龄18");this.age = 18;//给一个默认年龄}}public double getSalary() {
//        可以增加对当前对象的权限判断return salary;}public void setSalary(double salary) {this.salary = salary;}//    写一个方法,返回属性信息public String info() {return "信息为 name=" + name + "age=" + age + "薪水=" + salary;}
}

5.总结

通过上面的案例,

setXxx

对名字的长度进行逻辑判断。

调用:

  Person person = new Person();
//        谁调用我this指向谁person.setName("jac");
    public void setName(String name) {
//        加入对数据的验证if (name.length() >= 2 && name.length() <= 6) {this.name = name;} else {System.out.println("名字的长度,需要(2-6)字符");this.name = "无名人";}}

这个jac以实参的形式传递给name,对name进行判断,如果字符的长度是2-6位则直接赋值,这里的this

谁调用我this指向谁,这里是对名字长度的限制

    判断if (age >= 1 && age <= 120) {this.age = age;} else {System.out.println("你设置的年龄不对,需要在1-120.给默认年龄18");this.age = 18;//给一个默认年龄}

对传入的年龄进行限制

getXxx

年龄和工资不是随便人都可以查看

  public int getAge() {return age;}
  public double getSalary() {
//        可以增加对当前对象的权限判断return salary;}

可以在年龄返回之前,对其进行限制,需要一定的权限才能进行查看。

getXxx:在返回的时候进行限制。

setXxx :在传入的时候对其进行限制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/284724.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录27期|Python|Day17|二叉树|110.平衡二叉树 |257. 二叉树的所有路径 |404.左叶子之和

110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 在递归后序遍历的基础上加上一个中间节点判断左右子节点的高度的步骤即可。 具体实现 是如果左右子树已经高度差大于1&#xff0c;则中间节点标记为-1&#xff0c;在逐层向上返回之后可以在root节点被判定为false&am…

力扣---最长回文子串(动态规划)

目录 ​编辑 题目 思路步骤&#xff1a; 代码 我的其他博客 题目 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&…

详解git pull和git fetch的区别

git pull和git fetch的区别, 网上人云亦云胡说八道的实在是太多了&#xff0c;误导我很久。 今天看到一个说得好的&#xff0c;记录一下。 前言 在我们使用git的时候用的更新代码是git fetch&#xff0c;git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢&#xff…

统计3个点在3维空间的分布

在4*4*4的立方体中&#xff0c;随机取3个点&#xff0c;有64*63*62/641664个结构&#xff0c; 21440 % 20224 % 1 1728 0.0415 17 1728 0.041475 2 1728 0.0415 18 1728 0.041475 3 576 0.0138 19 384 0.009217 4 576 0.0138 20 3456 0.082949 5 …

简述SD-WAN组网的五大技术优势

在信息时代&#xff0c;企业对网络的需求不再局限于简单的连接&#xff0c;而是追求更加高效、灵活和可靠的网络架构。SD-WAN&#xff08;软件定义广域网&#xff09;作为一项先进的组网技术&#xff0c;以其独特的优势成为企业网络升级的热门选择。本文将深入探讨SD-WAN的技术…

Ubuntu 虚拟机环境,编译AOSP源码

环境 : VMware虚拟机 Ubuntu 20.04.3 LTS 搭建配置开发环境 sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl…

2023年全球运维大会(GOPS深圳站)-核心PPT资料下载

一、峰会简介 1、大会背景与概述 全球运维大会&#xff08;GOPS&#xff09;是运维领域最具影响力的国际盛会&#xff0c;每年都会汇聚世界各地的运维专家、企业领袖、技术爱好者&#xff0c;共同探讨运维技术的最新发展、最佳实践以及面临的挑战。2023年GOPS深圳站作为该系列…

JDK21+HADOOP3.2.2+Windows安装步骤

哈哈哈 最近转战大数据这块了&#xff0c;分享一下hadoop3.2.2的安装步骤 借鉴了不少大佬的文章&#xff0c;如有雷同&#xff0c;都是大佬们的 1.JDK安装 我选择的是JDK21 以下是下载网址和截图&#xff0c;这个没有太多的&#xff0c;一般下载最新的就可以 JDK: Java Down…

Excel 如何把一句话里的特定字标记颜色

方案&#xff1a; 借助Work功能 诉求&#xff1a;把如下Excel内容里所有的天标记为红色 第一步&#xff1a;复制到World里 第二步&#xff1a; CtrlH 然后如图执行替换 第3步&#xff1a;World 复制会 Excel

HTML---CSS美化网页元素

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.div 标签&#xff1a; <div>是HTML中的一个常用标签&#xff0c;用于定义HTML文档中的一个区块&#xff08;或一个容器&#xff09;。它可以包含其他HTML元素&#xff0c;如文本、图像…

引领半导体划片机行业,实现钛酸锶基片切割的卓越效能

在当今快速发展的半导体行业中&#xff0c;博捷芯以其卓越的技术实力和精准的行业应用&#xff0c;脱颖而出&#xff0c;再次引领行业潮流。这次&#xff0c;他们将先进的BJX3356划片机技术应用于钛酸锶基片的切割&#xff0c;为半导体制造行业的进一步发展提供了强大的技术支持…

olap/clickhouse-编译器优化与向量化

本文主要结合15721和clickhouse源码来聊聊向量化&#xff0c;正好我最近也在用Eigen做算子加速&#xff0c;了解下还是有好处的。 提示编译器 提示编译器而不是复杂化简单的代码 什么时候使用汇编&#xff0c;什么时候使用SIMD&#xff1f;下面有几个基本原则&#xff1a; …