企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **封装的基本概念:** 封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问。例如:一台计算机内部极其复杂,有主板、CPU、硬盘和内存, 而一般用户不需要了解它的内部细节,不需要知道主板的型号、CPU 主频、硬盘和内存的大小,于是计算机制造商将用机箱把计算机封装起来,对外提供了一些接口,如鼠标、键盘和显示器等,这样当用户使用计算机就非常方便。 ## **封装的特点:** * 只能通过规定的方法访问数据。 * 隐藏类的实例细节,方便修改和实现。 ## **实现封装的具体步骤如下:** 1. 修改属性的可见性来限制对属性的访问,一般设为 private。 2. 为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。 3. 在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。 <br> <br> ## **封装实例一:** 在同一个文件下创建day02_encapsulation.java文件和day03_encapsulation2.java文件,在day02_encapsulation.java文件下,所封装的代码如下; ``` public class day02_encapsulation{ public int age; public void Setparamete(int age){ // 这是一个方法 this.age = age; System.out.println("我是封装的方法,我被调用了,呜呜呜"); } } ``` day03_encapsulation2.java文件下代码如下; ``` public class day03_encapsulation2{ public static void main(String [] args){ day02_encapsulation setparamete = new day02_encapsulation(); setparamete.Setparamete(20); } } ``` 我们在day03_encapsulation2.java文件里面调用了day_encapsulation里面的Setparamete方法 <br> ## **封装实例二:** 下面以一个学员类的封装为例介绍封装过程。一个学员的主要属性有姓名、年龄、联系电话和家庭住址。假设学员类为 student,示例如下: ``` public class day04_demo{ // 姓名、年龄、联系电话和家庭住址 private String name; private int age; private String phone; private String address; public String GetName(){ return name; } public void setName(String name){ // void 无返回结果 null 构造方法 this.name = name; } public int GetAge(){ return age; } public void setAge(int age){ if (age < 18 || age > 40 ){ System.out.println("年龄必须在18到40之间"); this.age = 20; }else{ this.age = age; } } public String Getphone(){ return phone; } public void setphone(String phone){ this.phone = phone; } public String GetAddress(){ return address; } public void setaddress(String address){ this.address = address; } } ``` 如上述代码所示,使用 private 关键字修饰属性,这就意味着除了 student 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 setXxx() 方法来对其进行赋值,通过 getXxx() 方法来访问这些属性。 <br> 在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 40 之间,则将 Employee 类的 age 属性值设置为 20,否则为传递过来的参数值。 <br> 编写测试类 student,在该类的 main() 方法中调用 student 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性,代码如下: ``` public static void main(String[]args){ // 调用 student 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性 day04_demo demo = new day04_demo(); demo.setName("王宝钏"); demo.setAge(18); demo.setphone("18080808080"); demo.setaddress("上海市上海徐汇区"); System.out.println("昵称:" + demo.GetName()); System.out.println("年龄:" + demo.GetAge()); System.out.println("电话:" + demo.Getphone()); System.out.println("家庭住址:" + demo.GetAddress()); } ``` 通过封装,实现了对属性的数据访问限制,满足了年龄的条件。在属性的赋值方法中可以对属性进行限制操作,从而给类中的属性赋予合理的值, 并通过取值方法获取类中属性的值(也可以直接调用类中的属性名称来获取属性值)。