当前位置: 首页 > news >正文

Java之封装(学习笔记)

封装定义(个人理解:)

封装就像电视遥控器的按钮,比如音量键,对于我们使用者来说就是可以直接按下去调控音量,对于代码写作者来说就是封装了调控音量的方法,使得我们只能去调控,不能改变内部。

封装的实现步骤:

  1. 将属性进行私有化private 【不能直接修改属性】

  2. 提供一个公共的(public)set方法,用户堆属性判断赋值

    public void setXxx(类型 参数名) { // Xxx -> 表示某个属性//加入数据验证的业务逻辑属性 = 参数名;
    }
  3. 提供一个公共的(public)get方法,用于获取属性的值

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

问题样例:

设置一个小程序,不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认年龄18岁,必须在1-100岁之间。年龄,工资不能直接查看,name的长度在2-6个字符之间。 

 代码示例: 

import java.util.Scanner;public class text01 {public static void main(String[] args) {Person person1 = new Person("simth",200,1400);System.out.println(person1.info());}
}class Person{public String name;private int age;private double salary;public Person() {}public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age = age;
//        this.salary = salary;setName(name);setAge(age);setSalary(salary);}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 <= 100)this.age = age;else{System.out.println("您输入的年龄不在1-100岁之间,给您默认年龄18岁");this.age = 18;}}public double getSalary() {System.out.println("您需要输入6位密码才能得到工资显示:");Scanner sc = new Scanner(System.in);int res = sc.nextInt();if(res == 123456)return salary;else{System.out.println("抱歉您输入的密码不对。查看不了工资~ 返回值:0.0");this.salary = 0.0;return salary;}}public void setSalary(double salary) {this.salary = salary;}public String info(){this.getSalary();return "name:" + name + ",\tage:" + age + ",\tsalary:" + salary;}
}

构造器与封装

还是上面的案例,当我们需要有构造器的时候,比如:

那么怎么解决这种情况呢?

 如果有错误欢迎小伙伴留言,这里仅是学习参考笔记,喜欢的留个关注再走吧~

http://www.xdnf.cn/news/50473.html

相关文章:

  • 算法分析传输加密数据格式密文存储代码混淆逆向保护
  • 4.19-4.20学习总结 网络编程+反射+动态代理
  • AI大模型发展现状与MCP协议诞生的技术演进
  • music21:伍佰 《挪威的森林》MIDI 音乐分析
  • Centos9 离线安装 MYSQL8
  • 【python编程从入门到到实践】第四章 操作列表
  • 进程控制(linux+C/C++)
  • day47——平方数之和(LeetCode-633)
  • javase 学习
  • SQL语句执行顺序
  • QML Universal样式
  • 在 Debian 12 中恢复被删除的 smb.conf 配置文件
  • Python基础总结(八)之循环语句
  • 【RabbitMQ | 第2篇】RabbitMQ 控制台实现消息路由 + 数据隔离
  • 本地化部署ASR服务程序:以FastASR为例
  • 使用 NEAT 进化智能体解决 Gymnasium 强化学习环境
  • 通过 WebSocket 接收和播放 WSS 协议视频流
  • Transformers是一种基于自注意力机制的神经网络模型
  • 王博:影视领域的多元创作先锋,以卓越才华开启新篇章
  • Java——类和对象
  • Nacos深度剖析与实践应用之-配置中心
  • RenderStage::drawInner
  • Vue如何实现样式隔离
  • 【Python笔记 01】变量、标识符
  • C++每周一篇
  • 零点、驻点、拐点、极值点、最值点的定义、几何意义、求解方法
  • MACOS 中聚焦使用技巧
  • 云效部署实现Java项目自动化部署图解
  • 基于SpringBoot+Vue实现的旅游景点预约平台功能一
  • Dijkstra 算法入门笔记 (适用于算法竞赛初学者) - C++ 代码版