• 【JAVA】为什么要使用封装以及如何封装


    在这里插入图片描述


    个人主页:【😊个人主页】
    系列专栏:【❤️初识JAVA】


    前言

    Java的封装指的是在一个类中将数据和方法进行封装,使其可以保护起来,只能在该类内部访问,而不允许外部直接访问和修改。这是Java面向对象编程的三个基本特性之一,另外两个是继承和多态。在此之前我们已经学习过关于继承的概念,今天我们来学习有关封装的内容。
    在这里插入图片描述

    封装的含义

    封装是面向对象编程的一种重要概念,是将数据和对数据的操作封装在一个类中,使得数据对外部的访问受到限制,只能通过类中的公共方法来访问或操作。封装的目的是隐藏类的实现细节,并且保护数据不被随意修改,从而增强了代码的安全性和可维护性。另外,封装也使得代码的扩展和修改更加方便,只需在类内部进行修改而不需要修改其他代码。

    通过封装,可以提高类的安全性可维护性,使得类的实现细节被隐藏,只暴露出有限的接口和功能给外部使用,从而减少了类之间的耦合性。同时,封装还可以实现数据隐藏和数据保护,提高程序的可靠性可扩展性

    四种访问控制符

    Java中,采用访问控制符来控制类中数据成员和方法的访问权限,主要有四种访问控制符:public、private、protected和默认访问控制符(即不写访问控制符)。

    • public:表示该数据成员或方法可以被其他任何类访问
    • private:表示该数据成员或方法只能在当前类内部访问
    • protected:表示该数据成员或方法可以在当前类和其子类中访问
    • 默认访问控制符:表示该数据成员或方法只能在同一个包内的其他类中访问

    封装的两种经典实例

    银行账户类

    该类的主要属性包括账户名、账号、账户余额等。其中账户余额是一个私有属性,外部无法直接访问。类中提供了一系列操作账户的方法,例如存款、取款、查询余额等。这些方法都能够在保证账户余额正确的情况下,修改账户余额。

    public class BankAccount {
        private String accountNumber;
        private double balance;
    
        public BankAccount(String accountNumber, double balance) {
            this.accountNumber = accountNumber;
            this.balance = balance;
        }
    
        public String getAccountNumber() {
            return accountNumber;
        }
    
        public double getBalance() {
            return balance;
        }
    
        public void deposit(double amount) {
            balance += amount;
        }
    
        public void withdraw(double amount) {
            if (balance >= amount) {
                balance -= amount;
            } else {
                System.out.println("Insufficient balance.");
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • accountNumber: 表示账户号码的字符串。
    • balance: 表示账户余额的双精度浮点数。
    • BankAccount(String accountNumber, double balance): 构造函数,用于创建一个新的银行账户对象。
    • getAccountNumber(): 返回账户号码的方法。
    • getBalance(): 返回账户余额的方法。
    • deposit(double amount): 存款方法,用于向账户中添加资金。
    • withdraw(double amount): 取款方法,用于从账户中扣除资金。如果账户余额不足,将输出一条错误信息。

    学生类

    public class Student {
        // 属性
        private String name;
        private int age;
        private String gender;
        private String id;
    
        // 构造方法
        public Student(String name, int age, String gender, String id) {
            this.name = name;
            this.age = age;
            this.gender = gender;
            this.id = id;
        }
    
        // 方法
        public void study() {
            System.out.println("学生正在学习");
        }
    
        public void showInfo() {
            System.out.println("姓名:" + name);
            System.out.println("年龄:" + age);
            System.out.println("性别:" + gender);
            System.out.println("学号:" + id);
        }
    
        // Getter和Setter方法
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 属性:学生类具有姓名、年龄、性别和学号这些属性。
    • 构造方法:学生类具有一个带四个参数的构造方法,用于初始化学生对象。
    • 方法:学生类具有学习方法和展示学生信息的方法。
    • Getter和Setter方法:学生类具有获取和设置属性值的Getter和Setter方法,用于保护属性的私有性。
  • 相关阅读:
    【嵌入式——QT】QTableWidget
    Vue.js 组件通信——父组件向子组件通过props传值
    Socks5代理与网络安全:保护您的隐私与数据
    猿创征文|【概率论基础进阶】随机事件和概率-概率及概率公式
    希格斯玻色子——物质质量起源的探索
    前端三件套 HTML+CSS+JS基础知识内容笔记
    511. 游戏玩法分析 I
    nacos解决启动报错 Unable to start embedded Tomcat
    RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列
    微信小程序配置
  • 原文地址:https://blog.csdn.net/weixin_73602725/article/details/133498865