java_封装-案例

时间:2024-10-31 06:57:37

在这里插入图片描述

package com.hspedu.encap;


public class Encapsulation01 {
    public static void main(String[] args) {
        // 如果要使用快捷键alt+r,需要先配置主类
        // 第一次,我们使用鼠标点击形式运算程序,后面就可以用了
        Person person = new Person();
        person.setName("Jackkkkkkkkkkkkkkku");
        person.setAge(30);
        person.setSalary(250000);

        System.out.println(person.info());
        System.out.println(person.getSalary());
    }
}
/*    那么在 java 中如何实现这种类似的控制呢?
        请大家看一个小程序(com.hspedu.encap: Encapsulation01.java), 不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认
        年龄, 必须在 1-120, 年龄, 工资不能直接查看 , name 的长度在 2-6 字符 之间*/
class Person {
    public String name; //名字公开
    private int age;// age私有化
    private double salary; //..

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

    //自己写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;
    }
}