Bootstrap

面向对象编程——封装

提示:本文为学习java基础篇的笔记 详解视频见于B站【零基础 快速学Java】韩顺平 零基础30天学会Java

文章目录


前言

       封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员


提示:以下是本篇文章正文内容,下面案例可供参考((案例来自B站【零基础 快速学Java】韩顺平 零基础30天学会Java))

一、封装是什么?

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

二、封装的实现步骤

1.将属性私有化(不能直接修改属性)

代码如下(示例):

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

2.提供一个set方法(用于对属性判断并赋值)

代码如下(示例):

可以用快捷键快速生成set方法(快捷键用法见于IDEA的使用—常用快捷键

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

3.提供一个get方法(用于获取属性的值)

可以用快捷键快速生成get方法(快捷键用法见于IDEA的使用—常用快捷键

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public double getSalary() {
        return salary;
    }

三、快速入门案例

       实现一种类似的控制。不能随便查看人的年龄、工资等隐私,并对设置的年龄进行合理的验证。年龄合理设置,否则给默认年龄,必须在1-120,年龄。工资不能直接查看。name的长度在2-6字符之间。

代码如下(示例):

public class Encapsulation01 {

    public static void main(String[] args) {

        Person person = new Person();
        person.setName("jack");
        person.setAge(300);
        person.setSalary(30000);
        System.out.println(person.info());
        System.out.println(person.getSalary());

        //如果我们自己使用构造器指定属性  在构造器中进行相关属性的验证
        Person smith = new Person("smith", 20, 30000);
        System.out.println("=====simth的信息=====");
        System.out.println(smith.info());
    }
}

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

    //根据要求完善代码


    //构造无参构造器
    public Person() {

    }
  //有三个属性的构造器
    public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age=age;
//        this.salary=salary;
        //我们可以将set方法写在构造器中,这样仍然可以验证
        setName(name);
        setSalary(salary);
        setAge(age);
    }

    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)个字符,默认名字。");
        }

    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("年龄需要在1-120之间");
            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;
    }
    
}

运行结果:

当参数数据符合验证标准时

当参数数据不符合验证标准时 (给出相应的提示信息)

 

 具体详解视频见于:韩顺平Java_封装快速入门


总结


       以上就是今天要讲的内容,本文介绍了封装的内容以及实现步骤,分为三部曲,分别是将属性私有化,提供set方法,提供get方法。以及对数据的验证,保证安全合理性。

;