封装(encapsulation)

package com.encupsulation;
//不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。
// 年龄合理就设置,否则给默认 年龄, 必须在 1-120,
// 年龄, 工资不能直接查看 , name 的长度在 2-6 字符 之间
public class encup01 {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("to飞洒发、是德国省的双飞人");
        person.setAge(444);
        person.setSalary(5000.55);
        System.out.println(person.info());
    }
}

class Person{
    //属性私有化
    public String name;
    private int age;
    private double salary;

    //公共的set方法,对象属性判断并且赋值
    public void setName(String name){
        //加入判断条件
        if(name.length()>2 && name.length()<6) {
            this.name = name;
        }else{
            System.out.println("您的名字长度不行");
            this.name = "错误";
        }
    }

    //公共的get方法,获取属性的值
    public String GetName(){
        return name;
    }

    //快捷键(getter and setter)
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //判断年龄的合理性
        if(age>1 && age<120 ) {
            this.age = age;
        }else{
            System.out.println("您输入的年龄过于离谱");
            this.age = 18;//给一个默认值
        }
    }

    public double getSalary() {
        return salary;
    }

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

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

 封装之后里面的属性就不能想改就改,而且还可以加一些业务逻辑(对于某个属性的要求)

建了个类,里面有一些私有化属性,setxxx就相当于对于属性的设置,getxxx就相当于得到我们设置过的属性

将构造器与setxxx相结合:

如果我们人为的设置一个构造器,那么在创建对象的时候放在括号里的属性就直接给了对象的属性,这样的话我们之前写的setxx方法就失效了(相当于被绕了过去),这样的话setxxx里面我们给属性设置的业务逻辑就没用了——————>可以把setxxx写到构造器里

//构造器
    public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age = age;
//        this.salary = salary;
        setName(name);
        setSalary(salary);
        setAge(age);
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值