JAVA基础(8.面向对象:封装)

本文详细讲解了Java中的封装原则,包括封装的原因、作用、如何封装及步骤,强调了封装对于保护数据安全的重要性。同时,文章介绍了关键字`this`的引入、含义、使用场景以及注意事项,帮助读者深入理解面向对象编程中的封装和`this`关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.什么是Java的封装

2. 封装【掌握】

2.1 为什么要封装?【了解】

2.2 封装的作用【了解】

2.3 怎么封装

2.4 封装的步骤【重点】

2.5 封装的注意事项【了解】

2.6 封装小结【掌握】

3. this【掌握两种使用语法】

3.1 this引入【了解】

3.2 this介绍【理解】

3.3 this使用【掌握】

3.4 this注意和小结【掌握】

3.5 this综合代码案例【掌握】


1.什么是Java的封装

封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。

2. 封装掌握

2.1 为什么要封装?了解

先来下面一个案例:

package cn.zs.potting1;

/**
 *	账户Account类
 *	封装引入
 */
public class Account {
	/** String类型成员变量姓名name */
	protected String name;
	
	/** String类型成员变量密码pwd */
	String pwd;
	
	/** double类型成员变量余额money */
	double money;
	
	/** boolean类型成员变量是否是vip用户 */
	boolean vip;
	
	/**
	 * Account类无参构造
	 */
	public Account() {}
	
	/**
	 * 有4个参数构造方法
	 * @param n
	 * @param p
	 * @param m
	 * @param v
	 */
	public Account(String n, String p, double m, boolean v) {
		name = n;// 将局部变量n赋值给成员变量name
		pwd = p;// 将局部变量p赋值给成员变量pwd
		money = m;// 将局部变量m赋值给成员变量money
		vip = v;// 将局部变量v赋值给成员变量vip
	}
	
	/**
	 * 获取当前成员变量money的值
	 * @return
	 */
	public double getMoney() {
		return money;
	}
}

测试类:
package cn.zs.potting1;

/**
 *	Account测试类
 *	封装的引入
 */
public class AccountTest {

	public static void main(String[] args) {
		// 创建Account对象,调用无参构造
		Account acc1 = new Account();
		// 给acc1成员变量赋值
		acc1.name = "某菲";
		acc1.pwd = "6969";
		acc1.money = 1.0;
		acc1.vip = false;
		// 打印acc1成员变量的值
		System.out.println(acc1.name);
		System.out.println(acc1.pwd);
		System.out.println(acc1.money);
		System.out.println(acc1.vip);
		// acc1调用getMoney方法
		double money = acc1.getMoney();// 因为getMoney方法是非static修饰,并且有返回值,所以用acc1调用,用double变量接收
		System.out.println(money);
		
		// 需求:当money达到50000.00的时候,会将vip升级为true。现在,能不能没有达到5万就不能升级。
		acc1.vip = true;// 这里没有经过任何权限判断,直接修改了值,不安全。所以,用封装解决这个问题。
		System.out.println(acc1.vip);// true
		
	}
}

出现上面测试类中的需求的时候,我们原来设计类的方式就不能满足需求了。那么我们怎么解决这个问题呢?

我们先来看看生活中我们是怎么解决类似问题的

  1. 大家想一想生活中封装是什么? 

例如:

  1. 网购一个娃娃我们都会发现,娃娃邮寄的时候,都是用箱子装起来。箱子是保护里面娃娃安全的。
  2. 台式机电脑,我们发现[主板、显卡、内存、电源、硬盘…]都是装在机箱中,其实机箱不是电脑运行必须的,那么其作用是什么呢?机箱是保护里面硬件的安全。

以上示例的共同点总结:

都是通过物理方式封装的操作,通过控制访问的方式达到保护内部成员的目的

而Java中是通过封装来完成保护内部成员的目的,所以,这就是我们学习封装的目的

2.2 封装作用了解

封装是为了保护内部数据的安全:

1. 不希望在外部类中随意访问类中的成员变量

2. 达到权限要求的才能访问。

3. 只是获取数据的时候。例如:单例模式。

2.3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值