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;
    }
}

posted @ 2022-10-08 10:39  花海~  阅读(123)  评论(0)    收藏  举报