一、需求分析
抽象类抽象出来是他们共有的特性:
此处为账户的姓名与余额。
发红包的是老板,领红包的为员工,红包的形式为普通红包。
二、代码实现
用户类:
主要包含两个私有变量: 名字、金额
有参、无参构造方法
为外部提供
package com.Coding.JavaSE.Demo1;
public class User {
private String name; //姓名
private int money; //余额
//创建无参和有参构造方法
public User() { }
public User(String name, int money) {
this.name = name;
this.money = money;
}
//为外部设置获取私有变量的方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
//显示当前用户的余额
public void show(){
System.out.println("用户名:" + name);
System.out.println("余额:" + money);
}
}
Boss:
package com.Coding.JavaSE.Demo1;
import com.Coding.JavaSE.Demo1.User;
import java.util.ArrayList;
public class Boss extends User {
//为Boss类创建有参、无参构造方法
public Boss(){
//super();
}
public Boss(String name, int money){
super(name, money);
}
//创建一个发红包的方法
public ArrayList<Integer> send(int totalMoney, int count){
//利用集合来存储红包金额
ArrayList<Integer> redlist = new ArrayList<>();
//查看一下boss当前有多少余额
int bossMoney = super.getMoney();
//判断余额是否充足
if(bossMoney < totalMoney){
System.out.println("余额不足!");
return redlist;
}
//从老板的余额中扣除要发的红包金额
super.setMoney(bossMoney - totalMoney);
//然后将红包的钱评分
int avg = totalMoney / count;
int mod = totalMoney % count; //此处选择将剩余的零钱放到最后一个包里面
for (int i = 0; i < count - 1; i++) {
redlist.add(avg);
}
//最后一个红包的金额可能是不同的
int last = avg + mod;
redlist.add(last);
return redlist;
}
}
Employee:
package com.Coding.JavaSE.Demo1;
import com.Coding.JavaSE.Demo1.User;
import java.util.ArrayList;
import java.util.Random;
public class Employee extends User {
//创建无参和有参构造方法
public Employee() {
}
public Employee(String name, int money) {
super(name, money);
}
//创建一个领红包的方法
public void receive(ArrayList<Integer> redlist){
//从多个红包中随机抽取一个 通过随机获得集合的一个索引来完成
int index = new Random().nextInt(redlist.size()); // 索引范围不能超过集合的大小
//从集合中删除这个索引对应的值,并把这部分钱添加到自己的账户上
Integer delta = redlist.remove(index); //delta就代表变动的金额
//获取当前员工的余额
int money = super.getMoney();
//将领到的红包添加到自己的余额中
super.setMoney(money + delta);
}
}
实现类:
package com.Coding.JavaSE.Demo1;
import java.util.ArrayList;
public class MainRedPackage {
public static void main(String[] args) {
//创建一个Boss类的对象
Boss boss = new Boss("王老板", 500);
boss.show();
System.out.println("=========================");
//创建两个Employee的对象
Employee employee = new Employee("小王",50);
Employee employee1 = new Employee("小李",30);
employee.show();
employee1.show();
//创建一个集合用来发红包
ArrayList<Integer> redlist = boss.send(450, 4);
employee.receive(redlist);
employee1.receive(redlist);
System.out.println("=========================");
employee.show();
employee1.show();
}
}
个人学习所用,不定时补充,感谢遇见,感谢支持。