Java基础——封装
Published on 2022-10-08 10:39 in 分类: Java基础 with 花海~
分类: Java基础

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 @   花海~  阅读(102)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
    · 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
    · 【译】Visual Studio 中新的强大生产力特性
    · 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
    · 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
    点击右上角即可分享
    微信分享提示