setXxx getXxx 封装

1.封装介绍

封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。

2.封装的理解和好处

(1)隐藏实现细节   方法(连接数据库)<-----调用(传入参数...)

只负责调用,封装的细节不考虑

(2)可以对数据进行验证,保证安全合理。

3.封装实现的步骤

(1)将属性进行私有化private(不能直接修改属性)

(2)提供一个公共的(public)set方法,用于对属性判断并赋值

public void setXxx(类型,参数名){

Xxx表示某个属性

//加入数据验证的业务逻辑

属性=参数名

}

(3)提供一个公共的(public)get方法,用于获取属性的值

public  数据类型 getXxx(){

//权限判断,Xxx某个属性

return xx

}

}

4.快速入门案例

代码:

package com.hspedu.encap;

public class Encapsulation01 {
    public static void main(String[] args) {
        Person person = new Person();
//        谁调用我this指向谁
        person.setName("jac");
        person.setAge(30);
        person.setSalary(30000);
        System.out.println(person.info());
    }
}

class Person {
    public String name; //名字公开
    private int age;//年龄私有化
    private double salary;//工资私有化

//    自己写setXxx和getXxx太慢了
//    然后根据要求来完善我们的代码


    public String getName() {
        return name;
    }

    public void setName(String name) {
//        加入对数据的验证
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("名字的长度,需要(2-6)字符");
            this.name = "无名人";
        }


    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
//        判断
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("你设置的年龄不对,需要在1-120.给默认年龄18");
            this.age = 18;//给一个默认年龄
        }

    }

    public double getSalary() {
//        可以增加对当前对象的权限判断

        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    //    写一个方法,返回属性信息
    public String info() {
        return "信息为 name=" + name + "age=" + age + "薪水=" + salary;

    }
}

5.总结

通过上面的案例,

setXxx

对名字的长度进行逻辑判断。

调用:

  Person person = new Person();
//        谁调用我this指向谁
        person.setName("jac");
    public void setName(String name) {
//        加入对数据的验证
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("名字的长度,需要(2-6)字符");
            this.name = "无名人";
        }
    }

这个jac以实参的形式传递给name,对name进行判断,如果字符的长度是2-6位则直接赋值,这里的this

谁调用我this指向谁,这里是对名字长度的限制

    判断
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("你设置的年龄不对,需要在1-120.给默认年龄18");
            this.age = 18;//给一个默认年龄
        }

对传入的年龄进行限制

getXxx

年龄和工资不是随便人都可以查看

  public int getAge() {
        return age;
    }
  public double getSalary() {
//        可以增加对当前对象的权限判断

        return salary;
    }

可以在年龄返回之前,对其进行限制,需要一定的权限才能进行查看。

getXxx:在返回的时候进行限制。

setXxx :在传入的时候对其进行限制。

相关推荐

  1. toggle封装

    2023-12-18 09:30:04       63 阅读
  2. 【C++】封装

    2023-12-18 09:30:04       43 阅读
  3. C# 封装

    2023-12-18 09:30:04       42 阅读
  4. 封装UUID

    2023-12-18 09:30:04       29 阅读
  5. axios封装、二次封装

    2023-12-18 09:30:04       72 阅读
  6. C#面向对象——封装封装案例示例

    2023-12-18 09:30:04       44 阅读
  7. .net HttpClient封装

    2023-12-18 09:30:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-18 09:30:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-18 09:30:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-18 09:30:04       87 阅读
  4. Python语言-面向对象

    2023-12-18 09:30:04       96 阅读

热门阅读

  1. ES6之对象新增的方法

    2023-12-18 09:30:04       58 阅读
  2. IDEA中如何使用Vue

    2023-12-18 09:30:04       57 阅读
  3. 全志V3s之NFS连接ubuntu22.04

    2023-12-18 09:30:04       60 阅读
  4. conda channel的镜像设置

    2023-12-18 09:30:04       49 阅读
  5. 力扣面试150题 | 15.三数之和

    2023-12-18 09:30:04       56 阅读
  6. Spring-整合MyBatis

    2023-12-18 09:30:04       55 阅读
  7. Cmake基础(6)

    2023-12-18 09:30:04       52 阅读
  8. Kubernetes 容器编排(3)

    2023-12-18 09:30:04       42 阅读
  9. python 读取execl 日期是数字或者字符串的处理

    2023-12-18 09:30:04       66 阅读
  10. 【机器学习】数据降维

    2023-12-18 09:30:04       70 阅读
  11. 机器学习scikit-learn实现

    2023-12-18 09:30:04       53 阅读