为什么要使用封装

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qnPWNme-1632138931299)(/img/bVcPt8f)]](https://i-blog.csdnimg.cn/blog_migrate/4da57862da992e5d6cbc1808da472cbc.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isAeXCLK-1632138931301)(/img/bVcPt86)]](https://i-blog.csdnimg.cn/blog_migrate/0a88de43ed3a978ad5f8c09d8b3f650d.png)
在定义类的时候,如果可以直接修改类中的字段那么就可能会出现以下的情况,age可以设置成1000,score可以设置为10000
封装要解决的问题:
- 封装可以隐藏实现的细节
- 让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问、
- 方便数据检查,有利于于保护对象信息的完整性
- 便于修改,提高代码的可维护性
为了实现良好的封装,需要从两个方面考虑
- 把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问
- 把方法暴露出来,让方法控制这些成员变量进行安全的访问和操作
因此,封装就有两个含义:把该隐藏的隐藏起来,把该暴露的暴露出来
如何使用封装
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2XSoIKr-1632138931305)(/img/bVcPt9b)]](https://i-blog.csdnimg.cn/blog_migrate/bab4f1b0ec3bc2890f2720974c0bac9b.png)

package com.msbline.oop.test;
public class Dog {
private String name;
private int age;
private String color;
public Dog() {
}
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
public void eat(){
System.out.println("eating bones");
}
public void play(){
System.out.println("play......");
}
public void show(){
System.out.println("name:"+this.name);
System.out.println("age:"+this.age);
System.out.println("color:"+this.color);
}
public void setAge(int age) {
if (age <= 20){
this.age = age;
} else {
System.out.println("年龄不合法");
}
}
public void setName(String name) {
this.name = name;
}
public void setColor(String color) {
this.color = color;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getColor() {
return color;
}
}
package com.msbline.oop.test;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("大黄");
// dog.age=20;
dog.setAge(21);
dog.setColor("yellow");
dog.show();
}
}
广义的封装
可以将完成特定功能的代码块封装成一个方法,供不同的程序调用,比如我们项目当中的工具类
访问控制符


本文介绍了封装的概念及其实现方式,强调了通过将类的内部状态隐藏并提供公共接口来访问和修改这些状态的方法,以增强代码的安全性和可维护性。

1447

被折叠的 条评论
为什么被折叠?



