什么是封装,封装如何使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

什么是封装,封装如何使⽤
1.封装的概念
(1)将东西包装在⼀起,然后以新的完整的形式呈现出来(即将属性和⽅法封装到类⾥⾯,通过添加访问修饰符来限制访问权限,以达到信息隐藏的⽬的)(2)信息隐藏:隐藏对象的实现细节,不让外部直接访问到
(3)将数据和⽅法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是⼀个同时带有特征和⾏为的数据类型。

(定义类,定义其属性、⽅法的过程称为封装类)
(4)信息隐藏是OOP最重要的功能之⼀,也是使⽤访问修饰符的原因。

(5)信息隐藏的原因包括:
①对模块的任何实现细节所做的更改不会影响使⽤该模块的代码
②防⽌⽤户意外修改数据
③使模块易于使⽤和维护
(6)访问修饰符:
①public(公开的):该类或⾮该类均可访问,权限最⼤
②private(私有的):只有该类可以访问,权限最⼩
③protected(受保护的):该类及其⼦类的成员可以访问,同⼀个包中的类也可以访问
④默认:同⼀个包中的类可以访问
(7)属性封装的实现
①修改属性的可见性来限制对属性的访问
②为每个属性创建⼀对赋值(setter)⽅法和取值(getter)⽅法,⽤于公开对这些属性的访问接⼝
③在setter和getter⽅法中,根据需要加⼊对属性操作的限制
public class Demo {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 22) {
System.out.println("错误!最⼩年龄应为22岁!");
this.age = 22;
} else {
this.age = age;
}
}
}
注意:除⾮必须公开底层实现细节,否则应该将所有属性指定为private加以封装,让外界不能直接访问修改,只能对外界提供set/get⽅法。

使⽤属性封装,通过增加数据访问限制,增强了类的可维护性。

(8)封装⽅法的⽬的:
①隐藏⽅法实现细节(⽅法体),向外部提供公开接⼝(⽅法头),以供安全使⽤
②简化调⽤,⽅便修改维护
③根据需要,可以私有化⽅法以供类内部使⽤
类的修饰符:
1.前缀修饰符(public,abstract,final)
2.后缀修饰符(extends,implements)
2.构造⽅法
(1)类的构造⽅法的概念和作⽤
构造⽅法负责对象初始化⼯作,为对象的属性赋合适的初始值。

创建对象时,其类的构造⽅法确保在⽤户操作对象之前,系统保证初始化的进⾏。

(即对属性进⾏初始化)
(2)构造⽅法的语法规则
①构造⽅法名与类名相同
②没有返回类型
③⽅法实现主要为字段赋初始值
(3)构造⽅法的调⽤
构造⽅法的调⽤很特别:通过new操作符(返回新建实例的引⽤),即创建对象的同时调⽤构造⽅法来对属性进⾏初始化。

也就是在我们创建对象的时候⾃动调⽤的。

注意:当我们在构造⼀个对象的时候,⼀定会调⽤构造⽅法,所以java系统保证每⼀个类都有构造⽅法。

当⼀个类没有显⽰声明构造⽅法的时候,系统会有⼀个默认的⽆参构造⽅法。

3.this关键字
(1)this关键字的特点:
①在类的⽅法中使⽤this关键字代表的是调⽤此⽅法的对象的引⽤(可以认为this和引⽤变量是同⼀个⼈,存的是同样的地址)
② this可以看做是⼀个变量,它的值是当前对象的引⽤
③使⽤this关键字可以处理⽅法中的成员变量和形参同名的问题
④当在⽅法内需要⽤到调⽤该⽅法的对象时,就可以⽤this
⑤在类的构造⽅法中可以调⽤this([参数列表])来调⽤该类的指定构造⽅法
public class Teacher {
private String name = "";
private int age;
private String city = "";
public Teacher() {
System.out.println("这是⼀个⽆参的构造⽅法");
}
public Teacher(String name, int age, String city) {
// 当⼀个构造⽅法去调⽤另⼀个构造⽅法的时候,对this的调⽤必须是该构造器中的第⼀条语句,因为要确保初始化的操作先被执⾏
// 构造⽅法中的this指的是正在被创建的对象
this();
= name;
this.age = age;
this.city = city;
}
// 同⼀个类中的⽅法去调⽤同⼀个类中的其它⽅法的时候,this可加可不加,不加时,程序在编译的时候会⾃动加上。

public String toString() {
// 这⾥的this可以省略不写
return "名字:" + + ",年龄:" + this.age + ",城市:" + this.city;
}
}。

相关文档
最新文档