Java类的三大特性之一:封装性

  概念(Idea;Notion;Concept)是人类在认识过程中,从感性认识上升到理性认识,把所感知的事物的共同本质特点抽象出来,加以概括,是自我认知意识的一种表达,形成概念式思维惯性。在人类所认知的思维体系中最基本的构筑单位。心理学上认为,概念是人脑对客观事物本质的反映。所以,想要学好知识,对概念的理解尤为重要。学好一门编程语言也是如此。
  但是,有些人说了:我对概念就不怎么上心,但是我也可以写出代码,实现我想要的功能。这话没错,但是在我们学习一门编程语言时往往会陷入一个误区:基础概念什么的知道就行,锻炼能力才是最终要的。殊不知,能力的提升是建立在基础之上的,经济基础决定上层建筑。所以我们今天就来聊聊Java语言中最基础的一个概念,Java类的三大特性之一:封装性。

1. 什么是封装性
  封装性,顾名思义,就是将一些东西打包成一个整体,用专业术语来讲就是:对用户隐藏其实现细节,使用该类的用户可以通过该类提供的接口来访问该类,使用户不能轻易的操作此数据结构,只能执行类允许公开的数据的一个小系统。
2. 使用封装的好处
  我们前面说到,使用该类的用户只能执行类允许公开的数据,这样一来就避免了外部操作对内部数据的影响,提高了程序的可维护性。下面通过几段代码来直观的看一下使用封装的好处。

class Person{
	//Person类的私有属性:姓名,年龄,性别
	private String name;
	private int age;
	private String sex;
	
	//用户可以通过以下方法访问或操作内部数据,如:姓名,年龄,性别
	public void setName(String n){
		name = n;
	}
	public void setAge(int a) {
		age = a;
	}
	public void setSex(String s) {
		sex = s;
	}
	
	public String getName(){
		return name;
	}
	public int getAge(){
		return age;
	}
	public String getSex(){
		return sex;
	}
}

Java类的三大特性之一:封装性_第1张图片
根据上述代码和图片我们可以看出,主方法中新建的对象不能直接访问Person类中的私有属性,只能通过该类留给我们的一些访问接口访问和操作内部数据,避免外部操作对内部数据的影响。
  我们再来设想一种情况:一个十分庞大的程序,有10000个对象具有这个Person类的属性,现在想将年龄由int改为String。对于以上情况如果不使用封装的话:

class Person{
	//Person类的属性:姓名,年龄,性别
	public String name;
	public int age;
	public String sex;
}
Person P = new Person();
P.age = 35;
P.name = "王二麻子";
P.sex = "男";
//..................................
//..................................(表示具有Person类的属性的对象还有很多个)

我们需要修改上万个位置,估计修改完之后我的表情应该是这样的
Java类的三大特性之一:封装性_第2张图片
但是如果我们使用了封装就完全不一样了:

class Person{
	//Person类的私有属性:姓名,年龄,性别
	private String name;
	private String age;//将年龄改为String型
	private String sex;
//用户可以通过以下方法访问或操作内部数据,如:姓名,年龄,性别
	public void setName(String n){
		name = n;
	}
	public void setAge(int a) {
		age = String.valueOf(a);//改动
	}
	//后续代码省略...........
}

这样一来,我们就省了很多力气,提高了代码的可维护性,估计改代码的时候我的表情是这样的:
Java类的三大特性之一:封装性_第3张图片

3. 对Java类封装性的理解
  其实对Java类的封装性的理解有很多方式,这里说说博主本人的理解吧!我是这样理解Java类的封装性的:使用Java类的封装性就好比是对快递进行打包,但是又不完全等于打包。因为我们对快递打包是越严密越好,可是我们把一个类严严实实的包装起来那这个类就是去其存在的意义了,可以说是一个“死类”,开发人员不能通过对外的接口来访问它,对开发人员来说这个类没有任何作用。
  试想一下:一座房子就像是一个类,里面的家具就是这个类私有的属性,墙就如同是封装,如果墙上没有安装门窗的位置,而是严严实实的一堵墙,那这座房子跟黑盒子没什么区别,同样,它也没有存在的意义。

特殊声明:本人并不是大佬,只是说一说自己在学习Java过程中的理解,文章有不正确的地方欢迎大家批评指正。最后希望大家不喜勿喷,营造良好的学习环境。
温馨提示:道路千万条,学习第一条。平时不学习,招聘两行泪!!!

你可能感兴趣的:(JAVA)