news 2026/8/16 8:45:48

Java入门--封装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java入门--封装

什么是封装

面向对象编程有三个基本特征:封装,继承,多态。
封装的意思就是把复杂的操作隐藏起来,只留下用来访问的接口用于使用。

访问权限修饰符

访问权限修饰符有三个。
public:修饰 类 属性 方法。
private:修饰 属性 方法。
protected:修饰 属性 方法
缺省不写:修饰 类 属性 方法

代码例子:

packagefengzhuang;publicclassUser{int age=0;// 默认(包可见)privateString name="chenjiamur";// 私有protectedboolean mood=true;// 包可见 + 子类可见}// 同一个包中的另一个类classUser2{User user=newUser();User3 user3=newUser3();voidtest(){user3.user=user;// 可以赋值int age2=user.age;// ✅ 同包,可访问 default// String name2 = user.name; // ❌ private,编译错误boolean mood2=user.mood;// ✅ protected 在同包内可访问}}// 继承 User 的子类(同包)classUser3extendsUser{User user;// 额外持有的引用(演示赋值用)voidtest(){int a=age;// ✅ 继承自父类的 default 成员,同包子类可访问// String n = name; // ❌ private,不能访问boolean m=mood;// ✅ protected,子类可访问(即使在不同包也 OK)// 若通过外部引用访问User u=newUser();int age2=u.age;// ✅ 同包,可访问 default// String name2 = u.name; // ❌ privateboolean mood2=u.mood;// ✅ protected 在同包内可访问(同包任何类)}}

实际例子

最后举一个实际的代码例子说明修饰符的作用

packagefengzhuang;publicclassUser{privateString name;// 必须6个字符以上privateString pwd;// 必须包含字符以及数字privateString email;// 必须包含合法的域名和@符号privateint age;// 0-150// 构造方法publicUser(String name,String pwd,String email,int age){//this.已有变量名=临时变量,这里就是括号里的临时变量传给了private修饰的几个变量。this.name=name;this.pwd=pwd;this.email=email;this.setAge(age);//经过条件判断才可以被使用的age}publicUser(){//函数的重载}publicUser(String name,String pwd){this.name=name;this.pwd=pwd;}publicintgetAge(){returnage;}publicvoidsetAge(int age1){// 将数据存入参数中,在方法中对参数进行验证后 再赋给属性if(age1<0||age1>150){System.out.println("年龄不合法~");return;}this.age=age1;}publicvoidshowInfo(){System.out.println("name:"+this.name+" pwd:"+this.pwd+" email:"+this.email+" age:"+this.age);}classStudent{}classTeacher{}classMain{publicstaticvoidmain(String[]args){User user=newUser("hello","123456","hello@hello.com",18);user.setAge(-100);int a=user.getAge();System.out.println(a);user.showInfo();User user1=newUser();User user2=newUser("admin","123456");user2.showInfo();user1.showInfo();}}}

private作用01:防止别人绕过检验方法。

// 假设 age 是 publicUser user=newUser("hello","123456","hello@hello.com",18);user.age=-100;// 直接赋值!不需要经过 setAge,编译通过,运行正常!

有了 private,外部无法直接访问 user.age,只能被迫调用 user.setAge(-100)。这样一来,你的校验逻辑就强制生效了,保证了对象的数据永远合法。
这就是 private 最大的作用:保护数据完整性,强制外部遵守你的业务规则。

private作用02:方便修改程序

添加private以后不能通过user.pwd=‘123’;等方式修改,而是只能通过setPwd()等方法进行获取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 8:43:00

家电与机器人技术融合:从智能家居到家庭智能体的演进与挑战

1. 一场静默的产业融合&#xff1a;当家电与机器人开始“双向奔赴” 最近行业里有个现象挺有意思&#xff0c;我把它称为一场“静默的围猎”。表面上看&#xff0c;家电巨头们纷纷在发布会上展示自家的机器人产品&#xff0c;从扫地机到炒菜机&#xff0c;再到能端茶倒水的服务…

作者头像 李华
网站建设 2026/8/16 8:42:01

在Android手机部署OpenClaw AI助手并接入企业微信全流程指南

1. 项目概述&#xff1a;在手机上跑一个企业级AI助手 最近在折腾一个挺有意思的事儿&#xff1a;把OpenClaw这个AI助手装到手机里&#xff0c;然后让它接入企业微信&#xff0c;变成一个随时待命的“手机秘书”。你可能会想&#xff0c;这玩意儿不是通常跑在服务器或者电脑上吗…

作者头像 李华
网站建设 2026/8/16 8:27:41

.NET 9 原生AOT与C# 13新特性实战解析及生态工具盘点

1. 开篇&#xff1a;为什么我们需要一份技术周刊&#xff1f; 如果你是一名C#/.NET/.NET Core的开发者&#xff0c;无论是刚入行的新人&#xff0c;还是摸爬滚打多年的老手&#xff0c;我相信你都有过类似的体验&#xff1a;每天打开各种技术社区、博客、GitHub&#xff0c;信息…

作者头像 李华
网站建设 2026/8/16 8:26:25

Word界面与校对语言设置全解析:告别多语言文档混乱

1. 项目概述&#xff1a;为什么界面与校对语言如此重要&#xff1f; 如果你经常使用Word处理多语言文档&#xff0c;或者你的操作系统语言与工作语言不一致&#xff0c;那么你一定遇到过这样的困扰&#xff1a;菜单栏全是看不懂的文字&#xff0c;拼写检查器不停地在你写的中文…

作者头像 李华
网站建设 2026/8/16 8:25:07

NVIDIA Nemotron 3.5 Lightning:极致推理速度与本地部署实践指南

这次我们来看 NVIDIA 最新发布的 Nemotron 3.5 Lightning 模型&#xff0c;以及谷歌 Gemini 月活突破 10 亿的消息。对于开发者而言&#xff0c;这不仅仅是两条新闻&#xff0c;更意味着大模型技术栈的格局正在发生新的变化。NVIDIA 的 Nemotron 系列一直以高效推理和易部署著称…

作者头像 李华