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.mfbz.cn/a/254365.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【真情流露】我为什么要写一本OpenCV C++书籍

使用OpenCV契机 大家好&#xff0c;我是贾志刚&#xff0c;OpenCV学堂公众号的号主&#xff0c;从2009年开始搞图像处理到今天我已经十四年了。刚开始搞图像处理做的是生物数据分析与细胞分析&#xff0c;用的是工具跟SDK是ImageJ这个框架&#xff0c;多数算法都是我自己裸写&…

借助图形控件Aspose.Tasks,在 C# 中将 XER 转换为 SVG

Primavera P6 是一款流行的项目管理软件&#xff0c;它使用XER 文件格式来存储项目数据。 SVG&#xff08;即可缩放矢量图形&#xff09;是一种流行的矢量图像格式&#xff0c;可用于为 Web 和打印应用程序创建可缩放图形。在某些情况下&#xff0c;我们可能需要以编程方式将 P…

深度学习笔记_6经典预训练网络LeNet-18解决FashionMNIST数据集

1、 调用模型库&#xff0c;定义参数&#xff0c;做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

算法模板之双链表图文详解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟双链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟双链表…

全国巡展“2024人工智能展·世亚智博会”3月上海·4月杭州·6月北京

近年来&#xff0c;我国积极布局人工智能产业&#xff0c;竞跑“未来赛道”。随着各行业、各领域对人工智能需求的日益增长&#xff0c;与实体经济深度融合的新模式不断涌现&#xff0c;形成了具有中国特色的研发体系和应用生态&#xff0c;引领着经济社会各领域从数字化、网络…

YOLOv3-YOLOv8的一些总结

0 写在前面 这个文档主要总结YOLO系列的创新点&#xff0c;以YOLOv3为baseline。参考(抄)了不少博客&#xff0c;就自己看看吧。有些模型的trick不感兴趣就没写进来&#xff0c;核心的都写了。 YOLO系列的网络都由四个部分组成&#xff1a;Input、Backbone、Neck、Prediction…

高新技术企业工时管理的挑战与应对策略

随着科技的飞速发展&#xff0c;高新技术企业已成为推动社会进步的重要力量。而在这类企业中&#xff0c;工时管理作为企业管理的重要组成部分&#xff0c;其意义也日益凸显。有效的工时管理不仅关乎企业的项目进度、人力掌控和资源合理配置&#xff0c;还直接影响到企业的研发…

centos7服务器上的文件上传到谷歌云盘(google drive)

1,下载gdrive客户端&#xff0c;Releases glotlabs/gdrive GitHub 2&#xff0c;下载完解压,并移动到cp gdrive /usr/local/bin/ 3&#xff0c;查看是否安装成功 4,添加账户&#xff0c;gdrive account add 根据链接&#xff0c;创建Client id和 Client secret 5,填写Client…

spring boot 配置多数据源 踩坑 BindingException: Invalid bound statement (not found)

在上一篇&#xff1a;《【已解决】Spring Boot多数据源的时候&#xff0c;mybatis报错提示&#xff1a;Invalid bound statement (not found)》 凯哥(凯哥Java) 已经接受了&#xff0c;在Spring Boot配置多数据源时候&#xff0c;因为自己马虎&#xff0c;导致的一个坑。下面&a…

SEO专业人士成功所需的8大技能

你有能力在SEO领域建立职业生涯吗&#xff1f;您需要某些技能才能成功。在这里了解这些技能是什么。 尽管SEO已经存在了几十年&#xff0c;但许多大学仍然没有教授SEO&#xff0c;也没有在大多数营销课程中提及。 SEO专业人士来自不同的背景。有些是程序员&#xff0c;有些是…

IDA PRO 0A - 交叉引用

本文将讨论IDA中的交叉引用的相关知识。 更多c逆向知识可以看B站的课程《C 反汇编基础教程(IDA Pro Visual Studio)》 交叉引用 IDA 中的交叉引用通常简称为xref 。从名字可以看出&#xff0c;使用快捷键就可以找出某个函数或者数据被引用的地方。 在IDA 中有两类基本的交叉引…

NSSCTF第16页(3)

[SWPUCTF 2023 秋季新生赛]ez_talk 上传一句话木马得到 抓包改文件类型 上传成功&#xff0c;只是倒序而已 得到flag [第五空间 2021]PNG图片转换器 这道题采用的是ruby语言&#xff0c;第一次听说 2021-第五空间智能安全大赛-PNG图片转换器 | 管道符与反引号的配合、open…

使用python实现链表

手写代码 class Node(object):def __init__(self, item):self.item itemself.next Noneclass LinkListFunction(object):"""此对象为Node对象的方法类"""def __init__(self):self.linklistlength 0 # 当前链表的长度def create_linklist_he…

C语言学习第二十六天(算法的时间复杂度和空间复杂度)

1、算法效率 衡量一个算法的好坏&#xff0c;是从时间和空间两个方面来衡量的&#xff0c;换句话说就是从时间复杂度和空间复杂度来衡量的 这里需要补充一点&#xff1a;时间复杂度是衡量一个算法的运行快慢&#xff0c;空间复杂度是主要衡量一个算法运行所需要的额外空间。 …

「Verilog学习笔记」交通灯

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule triffic_light(input rst_n, //异位复位信号&#xff0c;低电平有效input clk, //时钟信号input pass_request,output wire[7:0]clock,output reg…

Shared Worker的快速理解与简单应用

SharedWorker 是 HTML5 中引入的一种 WebWorkers 类型&#xff0c;用于在浏览器中创建可在多个浏览器窗口或标签页之间共享的后台线程。Web Workers 是在主线程之外运行的脚本&#xff0c;允许执行一些耗时的任务而不会阻塞用户界面。 对 SharedWorker 的概念、理解和应用的简要…

2023第十七届中国品牌节,酷开科技荣获金谱奖!

11月18日&#xff0c;以“复苏与腾飞”为主题的2023第十七届中国品牌节&#xff0c;在杭州市云栖小镇国际会展中心盛大开幕。来自政界、商界、文化界等领域的6000余名嘉宾出席本次盛会&#xff0c;共同见证了民族品牌的崛起&#xff0c;全力奉献一场史无前例的“品牌人的亚运会…

Pikachu漏洞练习平台之暴力破解(基于burpsuite)

从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基 Burte Force&#xff08;暴力破解&#xff09;概述 “暴力破解”是一攻击具手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认…

【操作系统】实验名称: 实验五 文件系统

实验目的&#xff1a; 1. 掌握文件系统的基本概念和工作机制 2. 掌握文件系统的主要数据结构的实现 3、掌握软件系统实现算法 实验内容&#xff1a; 设计并实现一个虚拟的一级&#xff08;单用户&#xff09;文件系统程序 提供以下操作 1、文件创建/删除接口命令 2、目录创建/删…

合并 K 个排序链表——Java解答

题目&#xff1a;合并 K 个排序链表 题目描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例&#xff1a; 假设有以下三个链表&#xff1a; 1->4->5, 1->3->4,…
最新文章