前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础篇-Java三大特性之封装

基础篇-Java三大特性之封装

作者头像
一个程序员的成长
发布2020-11-25 14:22:24
2550
发布2020-11-25 14:22:24
举报
文章被收录于专栏:bingfeng-技术bingfeng-技术

写了这么长时间的代码,现在感觉代码设计真的是一门艺术,虽然是一个非常简单的增删改查的需求,但是1000个人可能有1000个不同的设计方法,怎么设计的更为优雅、美观、简洁这是我们作为程序员的追求,那么我觉得应该从最基础的开始,我们应该重新认识Java这门语言,带着一种艺术的眼光去欣赏它。那么我们今天就先聊一聊Java的三大特性之封装

一、什么是封装

简单的来说,封装就是将类的属性私有化,不允许外部进行直接访问,只能通过提供的公共方法类访问。

小涛大白话:我跟我女朋友有了自己的一间房子,里面有沙发、电视、衣柜、床,这几天你正好从大城市来我这里也没地方住,正好我女朋友也不在,你想在我这住几天,但是怎么住进去呢?虽然你知道我房子有床,也知道我住哪,但是没有钥匙你进不去啊,所以你只能找到我,然后我才能拿着钥匙进去,带你睡到我的床上。

二、封装有什么好处

1、通过封装,我们可以实现对数据的访问限制,提高了程序的维护性;

2、隐藏程序的复杂性;

3、减少代码的耦合性;

小涛大白话:这个就不好意思说了,我跟我女朋友在床上干啥事还能让你们知道嘛,小样。

三、代码案例

说了这么多的骚话,那么归根结底还是要说代码的,因为只有看到才是最直观的。

我们来看下面的这个类:

代码语言:javascript
复制
public class Student {

    public String username; // 姓名

    public int age; // 年龄

    public String sex; // 性别
}

我们可以看到Student中的属性都是使用public进行修饰的,我们来看下面这种情况会出现什么问题。

代码语言:javascript
复制
public class Main {

    public static void main(String[] args) {

        Student student = new Student();

        student.username = "小涛";
        student.age = 21;
        student.sex = "男";
    }
}

假设我们现在需要将age的类型修改为String类型,如果存在一个实例还好,我们手动将age的值改成String就行了,要是有成百上千呢?难道我们还要一个一个的手动去改吗?那么显然是不太现实的,那么我们来看封装能不能解决这个问题。

代码语言:javascript
复制
public class Student {

    private String username;

    private int age;

    private String sex;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getUsername() {
        return username;
    }

    public int getAge() {
        return age;
    }

    public String getSex() {
        return sex;
    }
}
代码语言:javascript
复制
public class Main {

    public static void main(String[] args) {

        Student student = new Student();

        student.setUsername("小涛");
        student.setAge(20);
        student.setSex("男");
    }
}

封装首先我们将所有的属性私有化,并且提供了可供外部访问的set & get方法,那么如果将age属性修改为String类型,我们应该如何处理呢?

代码语言:javascript
复制
public void setAge(int age) {
        this.age = String.valueOf(age);
    }

我们只需要修改提供的set方法就可以将age传进来的int类型转换为String类型,其他地方不需要做任何的修改,是不是很方便。

四、总结

事实证明在软件开发中,做好代码的封装是非常有必要的,好的代码封装不仅可以让我们的开发变得简单,更能提高我们整个系统的维护性,更重要的是它能让你感觉到一种艺术手感,所以想要做好一个好的设计师,那么就从要考虑周全,让我们的系统不那么的臃肿。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档