Java 封装

什么是封装呢?

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;

这样做带来的好处:

  • 隐藏实现细节,提供公共的访问方式;
  • 提高了代码的复用性;
  • 提高安全性;

封装原则:

  • 将不需要对外提供的内容都隐藏起来;
  • 把属性隐藏,提供公共方法对其访问;

其实就上一节我们也提到了,我们开车,并不需要了解车的内部结构,我们只需要知道车提供了几个操作就可以了!

我们还是看同样的例子, 但是小修改了下

package com.pangugle.test;

public class Car {

	private int mSpeed = 0;

	public void go()
	{
		this.mSpeed = 1;
		System.out.println("开车...... 当前车速为 " + mSpeed);
	}

	public void doAddSpeed()
	{
		this.mSpeed += 1;
		System.out.println("踩油门加速...... 当前车速为 " + mSpeed);
	}

	public void doBrakes()
	{
		this.mSpeed -= 1;
		System.out.println("踩刹车减速...... 当前车速为 " + mSpeed);
	}

	public void stop()
	{
		this.mSpeed = 0;
		System.out.println("车熄火! 当前车速为 " + mSpeed);
	}

  public int getSpeed()
  {
    return this.mSpeed;
  }

	public static void main(String[] args)
	{
		Car car = new Car();

		car.go();
		car.doAddSpeed();
		car.doBrakes();
		car.stop();
	}

}

运行结果如下

开车...... 当前车速为 1
踩油门加速...... 当前车速为 2
踩刹车减速...... 当前车速为 1
车熄火! 当前车速为 0

这个类有五个方法

  • go()
  • doAddSpeed()
  • doBrakes()
  • stop()
  • getSpeed();

就是表示这个车的五个行为,而这五个方法就是封装在Car这个类里!

mSpeed 这个是车的速度参数,外部是拿不到的;

说白一点,别人找你借钱,总不能别人直接从你的口袋直接拿钱包吧! 就是这个道理,所以你需要用自己的手从口袋拿钱包,并把钱拿给他! 因此在这个car里,我们添加了一个getSpeed()方法,这样外部想获取当前车速,就可以通过因此在这个car里,我们添加了一个getSpeed() 获取!