写了这么长时间的代码,现在感觉代码设计真的是一门艺术,虽然是一个非常简单的增删改查的需求,但是1000个人可能有1000个不同的设计方法,怎么设计的更为优雅、美观、简洁这是我们作为程序员的追求,那么我觉得应该从最基础的开始,我们应该重新认识Java这门语言,带着一种艺术的眼光去欣赏它。那么我们今天就先聊一聊Java的三大特性之封装。
一、什么是封装
简单的来说,封装就是将类的属性私有化,不允许外部进行直接访问,只能通过提供的公共方法类访问。
小涛大白话:我跟我女朋友有了自己的一间房子,里面有沙发、电视、衣柜、床,这几天你正好从大城市来我这里也没地方住,正好我女朋友也不在,你想在我这住几天,但是怎么住进去呢?虽然你知道我房子有床,也知道我住哪,但是没有钥匙你进不去啊,所以你只能找到我,然后我才能拿着钥匙进去,带你睡到我的床上。
二、封装有什么好处
1、通过封装,我们可以实现对数据的访问限制,提高了程序的维护性;
2、隐藏程序的复杂性;
3、减少代码的耦合性;
小涛大白话:这个就不好意思说了,我跟我女朋友在床上干啥事还能让你们知道嘛,小样。
三、代码案例
说了这么多的骚话,那么归根结底还是要说代码的,因为只有看到才是最直观的。
我们来看下面的这个类:
public class Student {
public String username; // 姓名
public int age; // 年龄
public String sex; // 性别
}
我们可以看到Student中的属性都是使用public进行修饰的,我们来看下面这种情况会出现什么问题。
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.username = "小涛";
student.age = 21;
student.sex = "男";
}
}
假设我们现在需要将age的类型修改为String类型,如果存在一个实例还好,我们手动将age的值改成String就行了,要是有成百上千呢?难道我们还要一个一个的手动去改吗?那么显然是不太现实的,那么我们来看封装能不能解决这个问题。
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;
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.setUsername("小涛");
student.setAge(20);
student.setSex("男");
}
}
封装首先我们将所有的属性私有化,并且提供了可供外部访问的set & get方法,那么如果将age属性修改为String类型,我们应该如何处理呢?
public void setAge(int age) {
this.age = String.valueOf(age);
}
我们只需要修改提供的set方法就可以将age传进来的int类型转换为String类型,其他地方不需要做任何的修改,是不是很方便。
四、总结
事实证明在软件开发中,做好代码的封装是非常有必要的,好的代码封装不仅可以让我们的开发变得简单,更能提高我们整个系统的维护性,更重要的是它能让你感觉到一种艺术手感,所以想要做好一个好的设计师,那么就从要考虑周全,让我们的系统不那么的臃肿。