java基础之九->封装(encapsulation)

本文介绍了封装的概念及其实现方式,强调了通过将类的内部状态隐藏并提供公共接口来访问和修改这些状态的方法,以增强代码的安全性和可维护性。

为什么要使用封装

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qnPWNme-1632138931299)(/img/bVcPt8f)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isAeXCLK-1632138931301)(/img/bVcPt86)]

在定义类的时候,如果可以直接修改类中的字段那么就可能会出现以下的情况,age可以设置成1000,score可以设置为10000

封装要解决的问题:
  1. 封装可以隐藏实现的细节
  2. 让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问、
  3. 方便数据检查,有利于于保护对象信息的完整性
  4. 便于修改,提高代码的可维护性

为了实现良好的封装,需要从两个方面考虑

  1. 把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问
  2. 把方法暴露出来,让方法控制这些成员变量进行安全的访问和操作

因此,封装就有两个含义:把该隐藏的隐藏起来,把该暴露的暴露出来

如何使用封装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2XSoIKr-1632138931305)(/img/bVcPt9b)]
在这里插入图片描述

package com.msbline.oop.test;
public class Dog {
    private String name;
    private int age;
    private String color;
    public Dog() {
    }
    public Dog(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }
    public void eat(){
        System.out.println("eating bones");
    }
    public void play(){
        System.out.println("play......");
    }
    public void show(){
        System.out.println("name:"+this.name);
        System.out.println("age:"+this.age);
        System.out.println("color:"+this.color);
    }
    public void setAge(int age) {
        if (age <= 20){
            this.age = age;
        } else {
            System.out.println("年龄不合法");
        }
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public String getColor() {
        return color;
    }
}
package com.msbline.oop.test;
public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setName("大黄");
//        dog.age=20;
        dog.setAge(21);
        dog.setColor("yellow");
        dog.show();
    }
}
广义的封装

可以将完成特定功能的代码块封装成一个方法,供不同的程序调用,比如我们项目当中的工具类

访问控制符

在这里插入图片描述
在这里插入图片描述

总结在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值