封装
- 封装有什么用?
一个类体当中数据,假设封装置和,对于代码的调用人员来说,不需要关心代码的复杂实现,只需要一个简单的入口就可以访问了.另外,类体中的安全级别比较高的数据封装起来,外部人员不能随意访问,来保证数据的安全性 - 怎么进行封装,代码怎么实现?
第一步:属性私有化(使用private关键字进行修饰)
第二步:对外提供简单的操作入口
引入实例方法

get和set方法 +封装的实现
封装的代码两步实现:
第一步:属性私有化
第二步:1个属性对外提供两个set和get方法,外部程序只能通过set()方法修改,只能通过get()进行读取,可以在set方法中设置关卡来保证数据的安全性
set和get方法都是实例方法,不能带static
不带static的方法是实例方法,实例方法的调用必须先new对象
java开发规范中有要求,set方法和get方法要满足以下格式.
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
set方法的要求:
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}
大家尽量按照java规范中要求的格式提供set和get方法
如果不按照这个规范格式来,那么你的程序不是一个 通用的程序
person.java
Person表示人类
每一个人都有年龄这样的属性
年龄age ,int类型
我们这里先不使用封装机制,分析程序存在什么缺点?
Perosn类的age属性对外暴露,可以外部程序中随意访问,导致了不安全
怎么解决这个问题?
封装
//这个是没有封装的Person
// public class Person{
// //实例变量(属性)
// int age;// age属性是暴露的,在外部程序中可以随意的访问,导致了不安全
// }
//尝试封装一下
//不在对外暴露复杂的数据,封装起来
// 对外只提供简单的操作入口
// 优点:第一数据安全了,第二调用者也方便了
public class Person{
// private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问
//出了这个类,age属性就无法访问了,私有的
private int age;
//对外提供简单的访问入口(电视剧的遥控器就相当于电视剧的访问入口,简单明了)
//外部程序只能通过调用一下的代码来完成
//思考:你应该对外提供几个访问入口?
//思考:这些操作入口是否应该是方法呢?
//写一个方法专门完成读(get)
//写一个方法专门完成写(set)
//get和set方法应该带有static,还是不应该有static,get和set方法应该定义为实例方法
// get读年龄,set改年龄,这个读和改都是操作一个对象的年龄(没有对象何来年龄)
// 封装的第二步:对外提供公开的set方法和get方法作为操作入口,并且都不带static,都是实例方法
/*
[修饰符列表] 返回值类型 方法名(形式参数列表){
}
注意:
java开发规范中有要求,set方法和get方法要满足以下格式.
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
set方法的要求:
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}
大家尽量按照java规范中要求的格式提供set和get方法
如果不按照这个规范格式来,那么你的程序不是一个 通用的程序
*/
// get方法
public int getAge(){
return age;
}
//set方法
public void setAge(int nianLing){
//能不能再这个歌位置上设置关卡!
if(nianLing < 0 || nianLing > 150){
System.out.println("对不起,年龄值不合法,请重新赋值");
return; // 直接终止程序的执行
}
//程序能执行到这里,说明年龄一定是合法的
age = nianLing;
}
}PersonTest02.java
/*
Person表示人类
每一个人都有年龄这样的属性
年龄age ,int类型
我们这里先不使用封装机制,分析程序存在什么缺点?
Perosn类的age属性对外暴露,可以外部程序中随意访问,导致了不安全
怎么解决这个问题?
封装
*/
//这个是没有封装的Person
// public class Person{
// //实例变量(属性)
// int age;// age属性是暴露的,在外部程序中可以随意的访问,导致了不安全
// }
//尝试封装一下
//不在对外暴露复杂的数据,封装起来
// 对外只提供简单的操作入口
// 优点:第一数据安全了,第二调用者也方便了
public class Person{
// private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问
//出了这个类,age属性就无法访问了,私有的
private int age;
//对外提供简单的访问入口(电视剧的遥控器就相当于电视剧的访问入口,简单明了)
//外部程序只能通过调用一下的代码来完成
//思考:你应该对外提供几个访问入口?
//思考:这些操作入口是否应该是方法呢?
//写一个方法专门完成读(get)
//写一个方法专门完成写(set)
//get和set方法应该带有static,还是不应该有static,get和set方法应该定义为实例方法
// get读年龄,set改年龄,这个读和改都是操作一个对象的年龄(没有对象何来年龄)
// 封装的第二步:对外提供公开的set方法和get方法作为操作入口,并且都不带static,都是实例方法
/*
[修饰符列表] 返回值类型 方法名(形式参数列表){
}
注意:
java开发规范中有要求,set方法和get方法要满足以下格式.
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
set方法的要求:
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}
大家尽量按照java规范中要求的格式提供set和get方法
如果不按照这个规范格式来,那么你的程序不是一个 通用的程序
*/
// get方法
public int getAge(){
return age;
}
//set方法
public void setAge(int nianLing){
//能不能再这个歌位置上设置关卡!
if(nianLing < 0 || nianLing > 150){
System.out.println("对不起,年龄值不合法,请重新赋值");
return; // 直接终止程序的执行
}
//程序能执行到这里,说明年龄一定是合法的
age = nianLing;
}
}
















