封装

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

引入实例方法

java定义get方法 java中get方法怎么用_get方法




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; 
	}
}