User 抽象父类
1. 无参构造
2. 有参构造
3. 姓名 金额展示方法
4. get set方法
package com.hotel.demo; /** * @author admin * @version 1.0.0 * @ClassName User.java * @Description TODO 父类 * @createTime 2021年09月20日 12:04:00 */ public class User { private String name;//姓名 private int money; //余额 public User() { } public User(String name, int money) { this.name = name; this.money = money; } //展示一下当前用户有多少钱 public void show() { System.out.println("我是" + name + "用户," + "我有多少钱:" + 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; } }
Manager 群主类
1. 继承抽象父类 User
2. 实现抽象类中的方法
3.代码中有注释 不在赘述
方法逻辑:首先需要一个方法 三要素就是
返回值类型 :群主需要发红包 发出的红包是会被拆分为几等份 然后群员领取 所以这个地方就是 // ArrayList<Interger>
方法名 suibian 知名其意就好 举例 send
参数类型 发红包里面的参数类型需要什么 需要知道我要发多少红包 然后这个红包最后是要分为几份 so int money ,int count
package com.hotel.demo; import java.util.ArrayList; /** * @author admin * @version 1.0.0 * @ClassName Manager.java * @Description TODO 群主的类 * @createTime 2021年09月20日 12:08:00 */ public class Manager extends User { public Manager() { } public Manager(String name, int money) { super(name, money); } public ArrayList<Integer> send(int totalMoney, int count) { ArrayList<Integer> arrayList = new ArrayList<Integer>(); //定义一个集合 int leftMoney = super.getMoney();//群主当前的余额 if (totalMoney > leftMoney) { System.out.println("余额不足"); return arrayList; } //扣钱 super.setMoney(leftMoney - totalMoney); //发红包 需要拆分为count份 int avg = totalMoney / count; int mod = totalMoney % count; //余数 也就是零头 //剩下的零头 包在最后一个红包中 //下面把红包一个一个放到集合中 for (int i = 0; i < count - 1; i++) { arrayList.add(avg); } //最后一个红包 int last = avg + mod; arrayList.add(last); return arrayList; } }
Member 群员类
1. 继承User 父类
2. 实现构造方法
3.代码中有注释 不在赘述
package com.hotel.demo; import java.util.ArrayList; import java.util.Random; /** * @author admin * @version 1.0.0 * @ClassName Member.java * @Description TODO 群员类 * @createTime 2021年09月20日 12:20:00 */ public class Member extends User { public Member() { } public Member(String name, int money) { super(name, money); } public void receive(ArrayList<Integer> list) { //随机生成一个集合的索引编号 int index = new Random().nextInt(list.size()); //根据索引 从集合中删除 int delta = list.remove(index); //当前成员本来有多少钱 int money = super.getMoney(); //加法 并且重新设置回去 super.setMoney(money + delta); } }
Test类
测试用
package com.hotel.demo; import java.util.ArrayList; /** * @author admin * @version 1.0.0 * @ClassName Test.java * @Description TODO main方法测试 * @createTime 2021年09月20日 12:27:00 */ public class Test { public static void main(String[] args) { Manager manager = new Manager("群主", 100); Member one = new Member("成员A", 0); Member two = new Member("成员B", 0); Member three = new Member("成员C", 0); manager.show(); one.show(); two.show(); three.show(); System.out.println("==============="); //群主发40元红包 分成3份 ArrayList<Integer> list = manager.send(40, 3); //群员收红包 one.receive(list); two.receive(list); three.receive(list); manager.show();//100-40 // 13 13 14 随机份三人 one.show(); two.show(); three.show(); } }
效果演示