面向对象三大特性之一:封装篇

封装

为何要封装?

1.安全
2.复用代码
3.隐藏内部细节,只对外暴露你想让用户使用的东西

哪里可以用到封装?

1.属性封装

实体类中存有age这一属性,我们不想让它随意地被外界直接调用和赋值,所以把它以private修饰。但是外界需要用到这一属性,所以我们添加了get和set方法,以供外界调用。但是,众所周知,人的年龄在[0,150]这个区间内,超出这个年龄的就是非法值。如果set方法得到了一个非法值怎么办?所以在setAge方法中添加了条件判断,超出[0,150]的范围,将age置为0

	/**
	 * 用户年龄
	 */
	private int age;
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		if(0>age || 150<age){
			this.age = 0;
		}
		this.age = age;
	}
2.方法封装

有一个代码块,用以完成特定的求和功能,此时我们就可以把这段代码写在方法内,需要调用时用方法名add就可调用这个代码块,便利,又可复用

public int add(int a, int b){
	return a+b;
}
3.构造方法封装

我们创建了一个类,由于某种原因,我们不想让外界能够直接地创建它的对象,并且,只允许创建一个对象

	//私有构造方法
	private Test(){
		
	}
	//创建test,置为null
	private static Test test = null;
	//创建公有静态方法供外界调用
	public static Test createTest(){
		//在创建对象之前进行检查,如果test为空,给予创建,否则不创建
		if(test == null){
			test = new Test();
		}
		return test;
	}

经过以上的对构造方法的封装,外界只可通过createTest方法创建Test类的对象,并且只可创建一次,我们来检查一下

		Test t1 =Test.createTest();

		Test t2 = Test.createTest();

我们使用createTest方法创建了两个Test类的对象 t1 和 t2,但真的是两个对象吗?
看下图,这是Debug模式下的变量表,t1和t2的地址是相同的,也就是说,他们指向堆内存中的同一对象。由此可见,我们对构造方法的封装目的达到了!
在这里插入图片描述

5.类封装

通常项目中的核心代码,需要提高其的安全性,会使用内部类,对其进行高封装。
车中最核心的部分莫过于引擎,我们在创建Car之后,将引擎部分封装为类Engine

public class Car {

	private String brand;
	
	private String color;

	public Car(String brand, String color) {
		this.brand = brand;
		this.color = color;
	}
	
	public class Engine{

		//转速
		private int speed;

		public Engine(int speed) {
			this.speed = speed;
		}
		
		/**
		 * 启动引擎
		 */
		public void launch(){
			System.out.println(brand+"引擎正在启动");
			System.out.println("转速是"+speed);
		}
	}
	
	/**
	 * 车启动的时候调用引擎的launch()方法
	 */
	public void start(int speed){
			System.out.println(brand+"引擎正在启动...");
			System.out.println("转速是"+speed);
	}
}

调用内部类Engine时,只可以通过外部类对象来调用,直接创建会报编译错误!

		//创建外部类对象
		//第一种写法
		Car car = new Car("宝马","黑色");
		//使用外部类对象,创建内部类对象
		Car.Engine e1 = car.new Engine(20);
		e1.launch;
		//第二种写法
		Car.Engine e2 = new Car("奔驰","白色").new Engine(10);
		e2.launch;

内部类博大精深,分为:局部内部类、静态内部类、成员内部类、匿名内部类
如果理解不了可以先放着

以上就是封装的基本思想和方法

总结一下

比如我们使用的电脑,制造商只暴露给我们开机键,USB接口和充电接口,其他的我们无需知道的内部细节,厂商为了安全和避免不必要的麻烦,全部封装了起来。
封装思想也是如此!只给外界看你想给他看的,只给外界用你想给他用的,其他的一切,全部封装起来!

如有错误,感谢指出!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值