第三章:封装

3.1封装概念

封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。
什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。

3.1.1封装的好处有:
1.提高了安全性
2.提高了复用性
3.隐藏了现实细节

3.2 封装的使用步骤

在介绍封装步骤之前,要先了解一下什么是修饰符。
在面向对象的过程中,我们通过“权限的控制”对封装好的类加上权限,来限制外来者对类的操作,借以达到保障类中数据和方法安全的目的。而这种权限,可以用来控制属性和方法的访问范围。
Java中4中修饰符分别为public、protecyed、default、private。下表是不同修饰符的访问权限

修饰符同一个类同一个包子类所有类
pricate
default
protected
public

封装步骤如下。
1.尽量让权限降到最低,在类里要将属性前添加private修饰符,从而提高安全性。
2.在类中定义getter和setter方法,在方法内可以设置取值范围。
3.最后在我们的main函数里的对象,不能再直接调用属性了只能通过getter和setter方法调用。

下列看代码实例 3.2.1
示例3.2.1
public class Person{


//私有属性


private string name;
private String pwd;
private Integer age;
private String sex;

//无参数构造方法
public Person() {}

//对应私有属性的get和set方法
public string getName() {
return name ;
}

public void setName(String name) {
this. name = name;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this. pwd = pwd;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public String getSex() {
return sex;
}

publc void stSex:(tring sex) (
this.sex=sex
}
@Override
public String toString(){
return "Person[name="+name+",pwd="+pwd+",age="+age+",sex="+sex+"];
  }
}

3.2.2

public class Person{

//私有属性
public string name;
public String pwd;
public Integer age;
public String sex;

//无参数构造方法
public Person() {}

//对应私有属性的get和set方法
public void setAge(Integer age) {
if(age>=18&&age<=65)
this. age = age;
else
System. out. println("年龄输入不合法");
}

public Integer getAge() {
return age;
}
/...剩下的get和set方法
@ Override
public String toString() {

public String toString(){
return "Person[ name=" + name + ",pwd=" + pwd + ",age="+ age
+",sex="+sex+"];
  }
}
@ Override

在测试类,创建这个类的对象,并为属性赋值。

public static void main(String[] args) {

Person person = new Person();

person. setName("李四");
person. setAge(22);
person. setSex("女");
person. setPwd("123");

person.name=‘张E”;
person. sex = "男";
person. age =- 5;

System. out. println("姓名:" + person. toString()
+ "\n 性别:"+ person. getSex()
+"\In年龄:"+ person. getAge());
}

上面的测试类,运行后出现了如下列3.2.1所示结果
在这里插入图片描述
出现这样的问题解决方法如下:

出现的问题解决方法关键字
为对象属性赋值出现了两种方法,是的数据安全性不足将属性修饰符设为私有化,已解决此问题private
打印结果中出现了-5的年龄,这显然不是对的在setter方法中添加判断语句来解决if-else

扩展——log4j 3.4

日志及分类

软件的运行过程离不开日志。日志主要用来记录系统运行过程中的一些重要的操作信息,便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到发生的原因。

根据记录内容的不同,日志主要分成以下3类
1.SQL日志:记录系统执行的SQL语句。
2.异常日志:记录系统执行运行中发生的异常事件。
3.业务日志:记录系统运行过程,如用户登录、操作记录。

如何使用log4j记录日志3.4.1

下面就开始具体学习lgi,使用log4) 来记录日志。
1.在项目中加人log4j所使用的JAR文件
在Ecipe中选中要使用log4j 的项目,然后依次选择
“Project" →“properties"
"anBandpar 二Iueree"一。Add Etem J…"选项,弹出选择JAR的窗口,
找到自己计算机上存放的文件,即logij-l.2.17.jar,
如图3.4. 1所示。然后回到项目的
属性窗口,单击“OK”按钮即可。
在这里插入图片描述

2.创建log4j. properties文件
使用log4j需要创建log4j. propeties文件,该文件专门用来配置日志信息,如输出级
别、输出目的地、输出格式等。
选择要使用log4j的项目,右击“src”, 依次选择“New”-“File" 选项,弹出
“New File"对话框,输人文件名“log4j. properties", 单击"Finish" 按钮,结束创建。包
建后结果如图3.4.2所示。
3.编写log4j. properties文件,配置日志信息
现在,我们就一起来编写这个文件,内容如示例3.4. 1所示。各配置项的具体含义我
们会在后面详细讲解。根据配置,将在控制台和文件中同时记录日志信息,日志文件的名
字是sysInfo. log。
在这里插入图片描述

3.4.2 log4j配置文件

示例3.4.1中编写的文件是log4j的配置文件log4j. poperties, 下面对其中的配置信息
进行详细解释。

输出级别

log4j rootLogger = debug, stdout, lofile
其中,debug 指的是日志记录器( Logger)的输出级别,主要输出级别及含义如下。
(1) fatal: 指出严重的错误事件将会导致应用程序的退出。
(2) error: 指出虽然发生错误事件,但仍然不影响系统的继续运行。
(3)warn:表明会出现潜在错误的情形。
(4) Info: 在粗粒度级别上指明消息,强调应用程序的运行过程。
(5) debug: 指出细粒度信息事件,对调试应用程序是非常有帮助的。各个输出级别
优先级排序: fatal > error > warn > info > debugo
日志记录器( Logger)将只输出那些级别高于或等于它的信息。例如:级别为debug,
将输出fatal、error、 warm、info、 debug 级别的日志信息;而级别为error,将只输出fatal 、
error级别的日志信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值