封装(总结)

1.什么是封装?

封装是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,仅对外提供公共访问方式。

封装: 封闭(安全), 包装/组装(把零散的组装成一个整体), 实际开发中, 编码,设计,都需要有整体思维, 如果一个方法需要多个参数, 使用封装思维, 把这些参数封装到一个类中

目的: 为了安全性(不可见), 化零为整

化零为整是一种面向对象的思维,将对象理解为一个完整的个体,对象有一定的特征(属性)和行为(方法),将这个整体进行封装,而不是访问零散某个变量,这也是整体性思维。

2.封装的功能?

封装的功能:

  • 隐藏对象的实现细节

  • 迫使用户通过指定方法访问数据,能保护对象的数据不被误修改

  • 使代码更好维护, 使对象的重用变得更简单

3.java中封装的实现

封装可以通过访问修饰符来实现。在大多数面向对象编程语言中,有以下三种访问修饰符:

  1. public:公共访问修饰符,表示该成员可以被任何代码访问。

  2. private:私有访问修饰符,表示该成员只能被类的内部代码访问,外部代码无法访问。

  3. protected:受保护的访问修饰符,表示该成员可以被类的内部代码和该类的子类访问,但外部代码无法访问。

在Java中,实现封装可以将类的成员变量声明为private,并提供公共的getter和setter方法来访问和修改这些变量。这样做可以防止外部代码直接访问和修改对象的内部状态,同时提供了一种更加受控的方式来访问和修改这些变量。

如:下列定义一个Student类

public class Student {
    
    private String id; // 学号
    
    private String name; // 姓名​
    
    private int age; // 年龄
    
    private double grade; // 成绩

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {

        if(age > 0 ) { // 控制数据的有效性

            this.age = age;

        }

    }

    public double getGrade() {
        return grade;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }
}
public class Test {

    public static void main(String[] args) {

        Student student = new Student(); // 创建Student类的对象student

        student.age = -1 // 报错,无法进行属性age进行修改

        student.setAge(-1);

        studetn.getAge(); // 一定不是负数

    }
}
   

为什么要对成员变量进行私有化(private)?

原因:保护数据的安全性和有效性。

将类的成员变量私有化(private)了,如果我们想要或者必须对成员变量进行访问了,我们又将如何来访问已经私有化(private)的成员变量呢?

解决方案:对外(不是在本类访问该方法的情况)提供一个相应的Setter和Getter方法(访问权限为:public)。即在本类之外,如果要对该属性进行访问,可通过该属性相应Setter和Getter方法(public)对该属性完成访问。在setter方法中,我们还添加了一些校验逻辑,以确保age在有效范围内。这样做可以防止外部代码直接访问和修改对象的内部状态,并提供了一种更加受控的方式来访问和修改这些变量.

4.封装的实际应用

项目中开发分层:

一个标准的javabean需满足什么条件?

1.成员变量使用private修饰。

2.提供每个成员变量对应的set和get方法。

3.必须提供一个无参构造器(一般情况下,默认有无参构造器)。

除此之外,封装思想应该贯彻到编码的各个阶段,比如说jdbc封装成dbutil工具。

他是将一些有共性的代码提取到一个方法中,供其他地方调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值