Java面向对象--封装

本文探讨了封装在软件开发中的关键作用,包括隐藏实现细节、数据验证和步骤演示。通过实例展示如何在Person类中实现属性私有化和set/get方法,确保代码的安全性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 封装(encapsulation)

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

封装的理解和好处

  1. 隐藏实现细节:方法(连接数据库)<--调用(传入参数..)
  2. 可以对数据进行验证,保证安全合理

封装的实现步骤(三步)

  1. 将属性进行私有化private{不能直接修改属性}
  2. 提供一个公共的(public)set方法,用于对属性判断并赋值

Public void setXxx(类型 参数名){//Xxx表示某个属性

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

       属性=参数名;

}

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

   public XX getXxx(){//权限判断

        return xx;

}

小案例如下:

package com.gx.one;
public class Encapsulation01 {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("jack");
        person.setAge(30);
        person.setSalary(30000);
        System.out.println(person.info());
        System.out.println(person.getSalary());
        //如果我们自己使用构造器指定属性
        Person smith = new Person("smith",2000,50000);
        System.out.println("smith的信息");
        System.out.println(smith.info());
    }
}
//Person类
class Person{
    public String name;
    private int age;
    private double salary;
    //无参构造器
    public Person() {
    }
    //有参构造器
    public Person(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
        //将set方法写在构造器,仍然可以验证
        setName(name);
        setAge(age);
        setSalary(salary);
    }
    //get和set方法
    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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书199

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值