当前位置: 首页 > 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;}
}

构造器与封装

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

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

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

相关文章:

  • Redis 哨兵与集群脑裂问题详解及解决方案
  • string类(详解)
  • 【AI+HR实战应用】用DeepSeek提升HR工作效能
  • STM32时钟树
  • firewall指令
  • 面试常用基础算法
  • MySQL 线上大表 DDL 如何避免锁表(pt-online-schema-change)
  • 宝马2016款泰产F800GS更换前减震油封和防尘盖
  • 致迈协创C1pro考勤系统简介
  • 立体匹配模型RAFT-Stereo的onnx导出与trt使用指南
  • 硬件电路(24)-NE555振荡电路
  • c++类与对象(一)
  • 成品检验工程师心得总结
  • SQL语句执行顺序
  • 手撕LLM(五):从源码出发,探索多模态VL模型的推理全流程
  • 线性DP:最长上升子序列(子序列可不连续,子数组必须连续)
  • 多态的学习与了解
  • Java【网络原理】(4)HTTP协议
  • 5.1 掌握函数定义与参数传递的奥秘
  • RNN的理解
  • 商务部:新一轮服务业扩大开放一次性向11个试点省市全面铺开
  • 牛市早报|国常会:要持续稳定股市,4月LPR今日公布
  • 一女子称醉酒后疑似被性侵,长沙警方通报:嫌犯邱某某已被刑拘
  • 美接连派轰炸机、无人机前往日本,驻日美军正升级空中力量
  • 郑州一废弃饭店堆砌物起火:明火被扑灭,未造成人员伤亡
  • 商务部:敦促美方立即停止极限施压,停止胁迫讹诈