Java——三大特性之一:封装(概念理解+应用举例)

news/2025/2/24 15:29:09

1.概念理解: 

在OOP中,封装(encapsulation)是指对于某个对象,Java隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

而封装的优点则有以下几点:

①良好的封装能够减少耦合。

②类内部的结构可以自由修改。

③可以对成员变量进行更精确的控制。

④隐藏信息,实现细节。

对于想要实现的操作,一个类已经将其封装好,你只需调用方法即可,这正是OOP中的精髓。
通过封装使一部分成员充当类与外部的接口,而将其他的成员隐藏起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。

我们还是举两个例子来更好的理解封装这个概念!!!👇👇👇

 

2.应用举例

Example 1:

import java.util.*;
class Member {
	public String name;//公共属性name
	public int salary;//公共属性salary
        private String sex;//私有属性sex
	public void setSex(String sex) {//定义一个公共的方法来设置sex属性
		this.sex=sex;
	}
	public String getSex() {//定义一个公共的方法来获取sex属性
		return this.sex;
	}
        public void setHobby(String hobby) {//定义一个公共的方法来设置hobby属性
		this.hobby=hobby;
	}
	public String getHobby() {//定义一个公共的方法来获取hobby属性
		return this.hobby;
	}
	public void talk() {//定义一个公共的方法talk
		System.out.println(name+"聊得非常开心!");
	}
}
public class Demo {
	public static void main(String[] args) {
		Member m=new Member();
		m.name="小红";//对公共属性name直接赋值
                m.salary=5000;//对公共属性salary也可以直接赋值
		m.setSex("女");//对私有属性操作,要通过get来访问、set来更改的方法
		m.setHobby("逛街");//同上
		System.out.println("姓名:"+m.name+",性别:"+m.getSex()
				   +",薪水:"+m.salary+",爱好:"+m.getHobby()+"!");
		m.talk();//可以调用Member类中的公共方法talk
	}
}

运行结果如下: 

上面这段代码,我们举例一个相对简单的例子,通过注释可以看到,这就实现了封装,对于公共属性name和salary,我们可以直接对其赋值;但是对于私有属性sex和hobby,我们需要通过使用set方法来为其赋值,再通过get方法来获取其值。

俗话说,概念理解的再多再准确,也不如写一段代码熟悉的更快!下面我们再举一个和上面类似的例子吧!!!👇👇👇

Example 2:

import java.util.*;
class Young {
	private String name;
	private int age;
	private String major;
	public void setName(String name) {
		this.name=name;
	}
        public void setAge(int age) {
		this.age=age;
	}
	public void setMajor(String major) {
		this.major=major;
	}
	public String getName() {
		return this.name;
	}
	public int getAge() {
		return this.age;
	}
	public String getMajor() {
		return this.major;
	}
}
public class Forever {
	public static void main(String[] args) {
		Young member=new Young();
		member.setName("张三");
		member.setAge(20);
		member.setMajor("计算机科学与技术");
		System.out.println("学生姓名:"+member.getName()+
				  ",年龄:"+member.getAge()+
				  ",专业:"+member.getMajor()+"!");
	}
}

运行结果如下: 

这个例子和第一个差不多,大家可以去理解一下,如有问题,可以评论或者私信!!!

那么,以上就是博主对Java三大特性之一——封装的理解!!!

 


http://www.niftyadmin.cn/n/712902.html

相关文章

Java 8 Stream API具体解释

Java 8 Stream API具体解释 一、Stream API介绍 Java 8引入了全新的Stream API,此Stream与Java I/O包里的InputStream和OutputStream是全然不同的概念,它不同于StAX对XML解析的Stream,也不同于Amazon Kinesis对大数据实时处理的Stream。Strea…

vb.net 线程偶尔不会自动关闭_C++系列 --- 线程内核对象

一、线程内核对象线程内核对象就是一个包含了线程状态信息的数据结构。每次对CreateThread函数的成功调用,系统都会在内部为新的线程分配一个内核对象。系统提供的管理线程的函数就是依靠访问线程内核对象来管理实现的。线程内核对象结构线程创建内核对象时&#xf…

ios屏蔽描述文件官方下载入口_如何禁止iPhone和iPad自动升级iOS11系统,描述文件安装失败如何解决?...

【本描述文件已失效,移步:最新iOS屏蔽描述文件>>】【本描述文件已失效,移步:最新iOS屏蔽描述文件>>】【本描述文件已失效,移步:最新iOS屏蔽描述文件>>】(提示更新ios 11示意图…

UVa 340:Master-Mind Hints

解题思路:首先统计位置正确的数量A,再统计正确答案和猜测中的相同数字的对数X(不用管位置),则 BX−A例如: 答案为 1233553 猜测为 1133356 则有1-1、3-3、3-3、5-5、3-3五组可以配对,所以X5,而位置正确的数…

Java——三大特性之一:继承(概念理解+应用举例)

1.概念理解: 继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得…

ThreadLocal 应用

利用threadLocal 把拦截器中的对象传递到controller或service中 1.可以用 request 携带数据。 2.更优雅的方式是用threadlocal。 请求进入tomcat 和产生响应前,都处于同一个线程中比如在一个登录拦截器中,在preHandle方法中登录成功后,放行前…

node 怎么判断前端传过来的参数对象为空?_Node 常见面试题总结

阅读本文约需要9分钟大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务!1、长期为你提供最优质的学习资源!2、给你解决技术问题!3、每天在朋友圈里分享优质的技…

es 多条件查询_ES优化最佳实践

原文链接https://www.jianshu.com/p/883325b7bbda1、bool 查询的 filter 筛选众所周知,ES中filter是不参与相关性评分的,所以查询子句可以被系统进行缓存,性能要高于普通的query查询。bool查询中支持4种子句,分别是filter、must、…