Java基础——封装
一、什么是封装
封装就是对象的属性和操作结合为一个整体,和并尽可能隐藏对象内部的细节。
二、为什么要封装
1.为了安全,提高程序的复用性,封装就是该漏的,该藏得藏。
2.如果没有封装就是任意的赋值,任意的取值
三、封装的实现
例如:
1.私有化成员变量
2.提供set和get
public class Student {
private String name;
private int age;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
//可以判断年龄区间是否为正常人,添加自己的业务逻辑
if(age>=0 && age <=120){
this.age = age;
}else{
System.out.println("你不是人");
}
}
public String getGender() {
this.gender=gender
}
public void setGender(String gender) {
//可以判断是否为男或女(字符串是否相等equals),添加自己的业务逻辑
if(gender.equals("男") || gender.equals("女")){
this.gender=gender
}else{
System.out.println("参数有误");
}
return gender;
}
}
public class Student{
public void test(int score){
s.setName("zs");
//会判断你不是人
s.setAge(66666);
//会判断参数有误
s.setGender("kkgjrijgrj");
}
}
四、方法的封装
public class Student{
public void isPass(int grade){
//通过if判断成绩是否合格
if(grade>=60){
System.out.println("过了");
}else{
System.out.println("挂了");
}
}
}
Student student=new Student();
//调用方法看是否合格
student.isPass(70);
五、参数封装
当传入很多参数需要些很多个,这时候我们会很麻烦,所以将这些数据放入一个对象中,用对象存储数据,如下两种:
public class StudentService {
//如果没有封装之前,有很多个参数,需要一个一个写
public void addStudent(String name,String password,String gender){
System.out.println("name:"+name+","+"gender:"+gender);
}
//方法重载参数进行封装
public void addStudent(Student student){
System.out.println("name:"+student.getName()+","+"gender:"+student.getGender());
}
}
//调用,如果添加数据会添加很多行
StudentService studentService=new StudentService();
int addStudent=StudentService.addStudent("djmm","123123","女")
int addStudent2=StudentService.addStudent("H","123456","男")
//调用的话Set和Get赋值,直接输出student
Student student=new Student();
student.setName("hzj");
student.setGender("男");
StudentService.addStudent(student);
六、封装返回值
进行程序封装时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求高内聚,低耦合
public class StudentService{
public void getStudentByName(Student student){
Student student=new Student();
student.setName("");
return student;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构