java--封装介绍

封装是面向对象编程的三大特征之一,它通过将数据属性和操作这些数据的方法封装在一起,保护数据不被直接访问。私有化属性防止外部直接修改,通过公共的set和get方法进行数据的合理验证和访问。文章通过一个Person类的例子展示了如何实现封装,包括年龄和工资的验证以及名字长度的控制。
摘要由CSDN通过智能技术生成

· 基本介绍

面向对象编程三大特征:封装、继承、多态。

· 封装

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

· 封装的理解和好处

(1)隐藏了方法的使用细节。(调用者可以不用知道方法的具体实现,只需要传入参数,就可以得到结果)

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

· 封装的实现步骤

(1)将属性进行私有化private 【保证外界不能直接修改属性】

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

public void setXXX(类似 参数名){
    //加入数据验证的业务逻辑
    属性 = 参数名;
}

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

public 数据类型 getXXX(){
    return xx;
}

举个栗子:

编写一段程序,要求不能随便查看人的年龄和工资,并且输入的年龄必须在1~120岁,否则就给一个默认年龄。工资不能被直接查看。名字的长度必须控制在2~6个字符之间。


public class Encapsulation {

    public static void main(String[] args) {

        Person person = new Person();
        person.setName("jack");
        person.setAge(30);
        person.setSalary(30000);
        System.out.println(person.toString());
    }

}


class Person {

    public String name;

    private int age;

    private double salary;

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值