Java 封装性详解

目录

一、引言

二、为什么需要封装性

(一)系统复杂性与类的管理

(二)内聚与耦合的概念

三、何为封装性

四、如何实现数据封装

(一)封装性的体现

五、类的成员之三构造器

(一)构造器的理解

(二)构造器的作用

(三)构造器的使用说明

六、实例变量赋值过程

(一)赋值位置

(二)执行顺序

七、总结


一、引言

在面向对象编程中,封装性是一个非常重要的概念。随着系统的日益复杂,良好的封装可以提高代码的可维护性、可扩展性和安全性。本文将深入探讨 Java 中的封装性,包括其重要性、实现方式以及相关知识点。

二、为什么需要封装性

(一)系统复杂性与类的管理

随着系统越来越复杂,类的数量也会不断增加。在这种情况下,类之间的访问必须得到妥善管理,以遵循面向对象的开发原则,即高内聚、低耦合。

(二)内聚与耦合的概念

  1. 内聚:指一个模块各个元素彼此结合的紧密程度。高内聚意味着类的内部数据操作细节由自己完成,不允许外部干涉,从而实现重用和独立。
  2. 耦合:是一个软件内不同模块之间互连的程度的度量。低耦合意味着尽量暴露少量的方法给外部使用,方便外部调用,减少因一个模块的变化而影响其他模块的可能性,避免出现“多米诺效应”。

三、何为封装性

封装就是把客观事物封装成抽象概念,并且类可以把自己的数据和方法只向可信的类或对象开放。通俗来说,就是把该隐藏的隐藏起来,把该暴露的暴露出来。

四、如何实现数据封装

在 Java 中,通过权限修饰符可以实现数据封装。Java 规定了以下权限修饰符:private、缺省(即没有显式指定权限修饰符)、protectedpublic。使用这四种权限修饰符可以修饰类的成员。

(一)封装性的体现

  1. 私有化类的属性,提供公共的getset方法,对属性进行获取或修改。
  2. 将类中不需要对外暴露的方法设置为private

以下是一个示例代码:

package com.encapsulation.exer1;

public class Person {
    private int age;

    // 设置 age 属性
    public void setAge(int a){
        if(a>=0&&a<=130){
            age = a;
        } else {
            System.out.println("不合法");
        }
    }

    // 获取 age 属性
    public int getAge(){
        return age;
    }
}

class PersonTest {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.setAge(20);
        System.out.println(p1.getAge());
    }
}

五、类的成员之三构造器

(一)构造器的理解

构造器是一种特殊的方法,用于在创建对象时初始化对象的状态。

(二)构造器的作用

  1. 搭配new关键字创建类的对象。
  2. 在创建对象的同时,可以给对象的相关属性赋值。

(三)构造器的使用说明

构造器声明的格式为:权限修饰符 类名(形参列表){ }。创建类以后,如果没有显式提供任何构造器,系统会默认提供一个空参构造器。一旦显式声明了构造器,系统就不再提供空参构造器。

六、实例变量赋值过程

(一)赋值位置

在类的属性中,可以在以下位置给属性赋值:

  1. 默认赋值:在属性声明时,如果没有显式初始化,会有默认值。
  2. 显式赋值:在属性声明时直接给定初始值。
  3. 构造器中赋值:在构造器中通过参数为属性赋值。
  4. 通过对象.方法赋值:调用类的方法为属性赋值。
  5. 通过对象.属性方式赋值:直接通过对象访问属性并赋值。

(二)执行顺序

这些位置的执行先后顺序为:默认赋值 -> 显式赋值 -> 构造器中赋值 -> 通过对象.方法赋值/通过对象.属性方式赋值。

七、总结

封装性是 Java 面向对象编程中的重要概念,它有助于提高代码的质量和可维护性。通过合理使用权限修饰符、构造器以及正确的实例变量赋值顺序,可以更好地实现封装,使代码更加安全、可靠。在实际开发中,我们应该充分利用封装性的优势,遵循良好的编程规范,提高软件的质量。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值