java知识28 Java封装【多测师】
一、面向对象中,封装是指将抽象性函式接口的实现细节部分包装、隐藏起来的方法 1.封装可以被认为是一个屏障,防止该类的代码和数据被外部类定义的代码随机访问 2.要访问该类代码和数据需要接口控制 3.封装可以修改自己的实现代码,而不用修改调用我们代码的程序片段 4.精确控制成员变量 5.隐藏信息,实现细节 二、封装的步骤 1.修改属性的可见性来限制对属性的访问(一般用private来限制) 这段代码中 将name和age属性设置为私有,只有本类可以访问,其他类访问不了 public class Person { private String name; private int age; } 2.对每个值属性提供对外的公有方法访问,用于对私有属性的访问 public class Person{ private String name; private int age; public int getAge(){ return age; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public void setName(String name){ this.name = name; } } 采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。 三、举例 定义一个Person类,给类定义一个私有属性age,setAge和getAge方法是为了别的类访问Person类的私有属性age定义的 代码如下: class Person { private int age; public void setAge(int age) { this.age = age; } public int getAge() { return age; } } public class Foo { public static void main(String[] args) { // 一个类的私有属性在其他类中只能通过get和set方法去访问 Person p = new Person(); p.setAge(18);// 设置属性age的值 int age = p.getAge(); System.out.println(age);// 输出为5 } } 运行结果:18 四、举例2 下面实例public方法是外部类访问该类成员变量的入口,这些方法被称为getter和setter方法,因此要访问类中私有成员变量的类都要通过这些getter和setter方法 调用方法: public class RunEncap { public static void main(String[] args) { EncapTest encap = new EncapTest(); encap.setName("dd"); encap.setAge(20); encap.setIdNum("1234ms"); System.out.println("Name:" + encap.getName() + "Age:" + encap.getAge()); } } public class EncapTest { private String name; // 私有成员变量 private String idNum; private int age; public int getAge() { return age; } public String getName() { return name; } public String getIdNum() { return idNum; } public void setAge(int newAge) { age = newAge; } public void setName(String newName) { name = newName; } public void setIdNum(String newId) { idNum = newId; } } 运行结果: Name:dd Age:20
分类:
多测师_Java编程相关
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)