java中的封装

源自生活

燃气热水器里面有这种管道,为了充分受热,管道会绕来绕去,管道上有很多导热片,火焰喷嘴还需要高压点火装置,还有温度传感器、流量传感器、排气传感器、电池阀门、电路板…等等。

在这里插入图片描述
但是我们日常使用时非常简单,上了年纪的老人都能很好的掌握使用,左边水龙头一开,热水就来了。
我们仔细想一下,一个热水器,所有内部使用的东西都装在了铁皮壳子内,暴露给用户的东西是很少的,一个进水口、一个出水口、一个进气口、一个排气口、一个调节面板。
在这里插入图片描述
代码上的封装也是相同的道理,秉承“高内聚,低耦合”的主要思想。

封装的优点

  1. 提高代码的安全性。

  2. 提高代码的复用性。

  3. “高内聚”:封装细节,便于修改内部代码,提高可维护性。

  4. “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。

访问控制符

  1. private 表示私有,只有自己类能访问

  2. default表示没有修饰符修饰,只有同一个包的类能访问

  3. protected表示可以被同一个包的类以及其他包中的子类访问

  4. public表示可以被该项目的所有包中的所有类访问

控制符同一个类同一个包子类所有类
private可访问///
default可访问可访问//
protected可访问可访问可访问/
public可访问可访问可访问可访问

类的属性

  1. 一般使用private访问权限。

  2. 提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。

  3. 一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

示例

人这个类有姓名、年龄等属性;设置年龄时,我们需要做一些判断,以验证年龄的合理性;比如一个叫张三的人年龄为-90岁,什么鬼?一个叫李四的人年龄9000岁,这他妈是太监魏宗贤吧!显然直接将年龄属性暴露给外部修改是不合适的,别人还得单独加验证,每个人写的验证还可能不一样,最后搞得乱七八糟的;那么我们将年龄的验证封装到setAge方法中,别人设置年龄直接调用setAge方法传入年龄就ok了,不用再考虑年龄值是否合理。

/**
* 人
*/
class Human extends Object{
   private  String name; //姓名
   private int age; //年龄
   private boolean alive; //活的
   
   //设置姓名
   public boolean setName(String name) {
       if(name.equals("")&&name.length()>12){
           this.name = name;
           return true;
       }else{
           return false;
       }
   }
   //获取姓名
   public String getName() {
       return name;
   }
   //设置年龄
   public boolean setAge(int age) {
       if(age>=0&&age<=120){
           this.age = age;
           return true;
       }else {
           return false;
       }
   }
   //获取年龄
   public int getAge() {
       return age;
   }
   public void setAlive(boolean alive) {
       this.alive = alive;
   }

   public boolean isAlive() {
       return alive;
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值