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

Javase(三)三大特性之封装

封装

现实生活中,比如鼠标,我们知道它是全部装在一个装置里面,只暴露出一个接口能够我们充电或连接电脑,里面的设计、电路等都不暴露给我们这些使用者看,这样子能很好的保护里面的东西不被破坏。

在Java中也是如此,将属性和方法全部都封装在类中,隐藏内部的具体实现细节,通过访问修饰符(private/public)控制访问权限,只暴露有限的访问接口(setter/getter),以降低耦合度,提高安全性。

在程序中具体如何实现封装

public class Pet { private String name; private String birthday; private char gender; public String getName(){ return this.name; } public String getBirthday(){ return this.birthday; } public char getGender(){ return this.gender; } public void setName(String name){ this.name = name; } public void setBirthday(String birthday){ this.birthday = birthday; } public void setGender(char gender){ this.gender = gender; } public void eat(){ System.out.println("正在吃..."); } public void run() { System.out.println("正在跑..."); } }

练习1:定义一个汽车类,包括属性:品牌、价格、颜色等。并对其中的价格属性进行封装,价格不得高于50万,不得低于20万。

public class Car { public String brand; private int price; public String color; public int getPrice(){ return this.price; } public void setPrice(int price){ if (price <= 500000 && price >= 200000) { this.price = price; } } }

练习2:定义一个银行账户类,包含属性:账户名、余额等。并对其中的余额进行封装,余额不得小于0。另外定义一个取款方法withdraw,判断取款金额是否合法,另外余额是否充足。

public class Account { public String name; private double balance; public double getBalance(){ return this.balance; } public void setBalance(double balance) { this.balance = balance; } public void withdraw(double money){ if (money <= this.balance && this.balance >= 0) { this.setBalance(this.balance - money); } } }

练习3:定义一个员工类,包含属性:姓名、年龄、工资等。并对其中的工资进行封装,工资不得低于800元。另外定义一个raise方法用来涨薪,如果涨薪后的工资超过了10000元,则不再涨薪。

public class Employee { public String name; public int age; private int salary; public int getSalary(){ return this.salary; } public void setSalary(int salary){ if (salary > 800) { this.salary = salary; } } public void raise(int money){ if (this.getSalary() + money < 10000) { this.setSalary(this.getSalary() + money); } } }

练习4:定义一个顾客类Customer,包括属性:姓名,生日,性别,联系电话等属性。对所有属性进行封装。然后提供一个购物的shopping()方法,再提供一个付款的pay()方法,在shopping()方法中购物,购物行为在结束前需要完成支付,因此在shopping()方法的最后调用pay()方法。体会实例方法中调用实例方法。

public class Customer { private String name; private String birthday; private char gender; private String phoneNumber; public String getName() { return name; } public String getBirthday() { return birthday; } public char getGender() { return gender; } public String getPhoneNumber() { return phoneNumber; } public void setName(String name) { this.name = name; } public void setBirthday(String birthday) { this.birthday = birthday; } public void setGender(char gender) { this.gender = gender; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public void shopping() { System.out.println("正在付款..."); this.pay(); System.out.println("购物结束"); } public void pay() { System.out.println("付款成功..."); } }
http://www.jsqmd.com/news/583323/

相关文章:

  • java答题pk小程序源码核心功能
  • AI-现金流-将-ChatGPT-变成您的-24-7-赚钱机器-2025-版-
  • 3D卷积和2D卷积区分-高光谱图像为例
  • 用了大半年的免费云服务器,分享真实体验
  • 看这家美国顶级新闻媒体如何用 Splashtop 实现效率与安全双飞跃
  • 有人说:中文只适合中国人学,因为前提要有个聪明的脑子!那么,中国人学英文,辅助用「干词」那简直就是聪明的脑子配上了高效的工具,原地学会!
  • 编译系统概述
  • 人在哪数据就在哪!两步打造私人高速通道,4K原片/工作文件随点随看
  • x64汇编:内存工作的基本原理
  • AI-现金流指南-最大化利润的-ChatGPT-货币化
  • 运动AI市场2026预测:亚太领跑、传感器国产化与5G+边缘计算新机遇
  • 开篇:数据处理绕不开的合并与拼接
  • Autovisor:智能优化在线课程学习效率的自动化解决方案
  • 2025届最火的降AI率平台推荐
  • 基于PLC的6层3部电梯 12000+字,纯手写的,西门子S7-1200PLC,文章里面的图纸...
  • ChatGPT-AI-大师终极指南
  • 基于单片机的全自动咖啡机控制系统设计
  • UE5-MCP终极指南:用AI魔法让游戏开发变得像聊天一样简单
  • 2026届毕业生推荐的十大降AI率工具横评
  • 团队技术专家的技术设计模版,真心好用!
  • 从零开始掌握小红书数据采集:xhs库的5大实战应用场景
  • 单片机代码版本管理工具横向评测与应用
  • 如何0失败部署ChemCrow?从环境配置到功能落地的全景指南
  • 基于机器学习提升烟雾探测器预测精度:告别误报,守护安全
  • 2025最权威的十大降重复率神器实际效果
  • 山东境内企业拓客推荐:当下获客越来越难,这几家平台值得参考
  • 解决方案:OpenRPA如何破解企业流程自动化成本与效率的双重困境
  • openclaw钉钉机器人团队
  • BomGW v1.0软网关 PLC存储到数据库SQL配置方法说明书
  • 论文AI率过高怎么降?实测有效方法+免费工具推荐