Java超详细讲解三大特性之一的封装
作者:crisp制药
说到面向对象则不得不提面向对象的三大特征:封装,继承,多态。那么今天就和大家先来介绍什么是封装。
封装
封装的概念
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。
为什么需要封装?
当我们创建一个类的对象后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里赋值操作要受到 属性的数据类型和存储范围的制约。除此之外,没有其他制约条件,但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制性条件的添加。同时我们需要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(private)。
封装的优点:
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
封装的实现步骤
(1)将属性修改为private
(2)创建getter/setter方法,通过这两种方法对数据进行获取和设定,对象通过调用这两种发方法实现对数据的读写。
class person{ private int age;//修改属性为private public int getAge(){ return age; } public void setAge(int a){ age = a; } }
封装 隐藏对象内部的复杂性,只对外公开简单的接口便于外部调用,封装性的体现,需要权限修饰符来配合。
Java中的包
Java中的包是为了更好的实现项目中类的管理,解决同名文件的冲突,提到java中的包那么我们就不得不提到package关键字,我们一般使用package声明类或接口所属的包,声明在源文件的首行,比如 package java.lang,每 . 一次就代表一层文件目录,同一个包下不能命名同名的接口,类,不同的包可以,对于包的使用则需要使用import关键字,在源文件中显示的使用import结构导入指定包下的类,接口,通常import声明在包的声明和类的声明之间,java中,包的名字规范是全小写的字母拼写
java中类的成员-构造器
任何一个类都有构造器,用来创建对象和初始化对象的属性,创建类的对象的方法:new+构造器,如 Person p = new Person();
如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
定义构造器的格式
权限修饰符 类名 (形参列表){}
总结:属性赋值的先后顺序:
1默认初始化
2显式初始化
3构造器中初始化
4通过“对象.方法”或“对象.属性”的方法,赋值
java中的this关键字
this关键字可以用来修饰:属性,方法构造器,this理解为:当前对象 或当前正在创建的对象
在类的方法中,我们可以使用“this.属性”或“this.方法”的方式,调用 当前对象属性或方法。但是通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用“this.变量”的方式,表面此变量为属性。
在类的构造器也是一样,调用一个空参的构造器:this();调用有参数的 比如 public Person (int age) 就可以用 this(age)来进行调用,但是构造器中不能自己调用自己只能调用其他的构造器,如果有n个构造器,那么只有n-1个构造器可以使用this这样的方式来调用,且构造器this调用必须声明在构造器的首行,this也可以用来进行对象之间的比较大小。
public class Boy { private int age; public int getAge() { return age; } public void setAge(int a) { age = a; } public void compare(Boy boy) { if (this.age > boy.age) { System.out.println("YES"); } else if (this.age < boy.age) { System.out.println("No"); } } }
总结
今天介绍了封装的概念,构造器,以及package,import 和 this关键字,希望大家喜欢。
到此这篇关于Java超详细讲解三大特性之一的封装的文章就介绍到这了,更多相关Java封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!