Java超详细讲解三大特性之一的封装(java封装的理解)

网友投稿 279 2022-07-30


目录封装封装的概念java中的包java中类的成员-构造器java中的this关键字总结

说到面向对象则不得不提面向对象的三大特征:封装,继承,多态。那么今天就和大家先来介绍什么是封装。

封装

封装的概念

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

为什么需要封装?

当我们创建一个类的对象后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里赋值操作要受到 属性的数据类型和存储范围的制约。除此之外,没有其他制约条件,但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制性条件的添加。同时我们需要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(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();如果没有显式的定IHXYbxwOA义类的构造器的话,则系统默认提供一个空参的构造器

定义构造器的格式

权限修饰符 类名 (形参列表){}

总结:属性赋值的先后顺序:

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关键字,希望大家喜欢。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java精品项目瑞吉外卖之新增菜品与分页查询篇
下一篇:Java超详细讲解三大特性之一的继承(继承是java语言的一个特性)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~