1.什么是java的封装


信息隐藏。隐藏对象的属性和实现的细节,仅对外提供公共访问方式。




2.怎么实现封装


一般使用private访问控制符实现,将对象的成员变量和实现细节隐藏起来,不允许外部直接访问;

把方法暴露出来,让方法控制这些成员变量,进行安全的访问和操作。




3.封装有什么好处


a.数据安全性提高了。private封装了类的数据项属性和方法实现细节,只有对象本身才能调用自己的资源,可以对数据的合法性进行校验

(可以想象一下,如果age/name/sex都变为public的,那么外部可以赋值任何数据,导致非法的数据也会放到对象里面,这是不应该的)

package com.glut.edu.xupk.model;

public class Person {
	
	private int age;
	private String name;
	private String sex;
	
	public int getAge() {
		return age;
	}
	
	//设置年龄在1~150之间,校验合法性
	public void setAge(int age) {
		if(age < 0 || age > 150){
			throw new IllegalArgumentException("年龄需在1~150之间,请检查!");
		}
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	
	//设置性别只能是男女
	public void setSex(String sex) {
		if(!("男".equals(sex) || "女".equals(sex))){
			throw new IllegalArgumentException("性别只能是男或女,请检查!");
		}
		this.sex = sex;
	}
	
	

}





b.隐藏了内部实现,可以随时对方法内部细节进行修改,而无需修改调用该方法的代码。只要保持得到的结果是正确的,内部代码就能自由改变,降低耦合度




c.降低了代码的耦合度,封装成工具类可以减少很多繁琐的步骤





举例说明:


a.生活中的例子


比如汽车的刹车,我们都知道,只要刹车不失灵,一脚踩下刹车,那么车子就会刹住;至于它内部工作原理是怎样的,我想一般的司机是不用理会它的。刹车坏了,给修车师傅修就好啦,专才专用嘛。这里的刹车就是一个封装,把汽车看作一个对象,刹车是对象的一个方法,刹车的功能是把车子刹住,使用刹车的方法就是踩下刹车踏板,这就是它对外提供的信息。如果我想换刹车的内部实现,比如我原来用的是鼓式刹车,我现在要换成盘式刹车,那我可以随意换,只要原来的功能没变就行,我一脚踩下刹车踏板,车子还是能刹住就OK啦



package com.glut.edu.xupk.model;

public class Car {
	
	public void brake(){
		//刹车的内部具体实现,可以改变实现,只要最终结果不变就行了
		System.out.println("车子刹住了!!!");
	}
	
	public static void main(String[] args) {
		Car car = new Car();
		//这里直接调用刹车方法,并不关心内部实现细节
		car.brake();
	}

}



才疏学浅,仅仅是入门知识,如有错漏,还请各位大大指正