11.3 继承的综合案例
11.3.1 综合案例:群主发普通红包
群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
- 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
- 成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
11.3.2 案例分析
根据描述分析,得出如下继承体系:

11.3.3 案例实现
定义用户类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class User { private String username; private double leftMoney; public User() { } public User(String username, double leftMoney) { this.username = username; this.leftMoney = leftMoney; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public double getLeftMoney() { return leftMoney; } public void setLeftMoney(double leftMoney) { this.leftMoney = leftMoney; } public void show() { System.out.println("用户名:"+ username +" , 余额为:" + leftMoney + "元"); } }
|
定义群主类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| public class QunZhu extends User { public QunZhu() { } public QunZhu(String username, double leftMoney) { super(username, leftMoney); }
public ArrayList<Double> send(int money, int count) { double leftMoney = getLeftMoney(); if(money > leftMoney) { return null; } setLeftMoney(leftMoney ‐ money); ArrayList<Double> list = new ArrayList<>(); money = money * 100; int m = money / count; int l = money % count; for (int i = 0; i < count ‐ 1; i++) { list.add(m / 100.0); } if (l == 0) { list.add(m / 100.0); } else { list.add((m + l) / 100.00); } return list; } }
|
定义成员类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Member extends User { public Member() { } public Member(String username, double leftMoney) { super(username, leftMoney); } public void openHongbao(ArrayList<Double> list) { Random r = new Random(); int index = r.nextInt(list.size()); Double money = list.remove(index); setLeftMoney( money ); } }
|
定义测试类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class Test { public static void main(String[] args) { QunZhu qz = new QunZhu("群主" , 200); Scanner sc = new Scanner(); System.out.println("请输入金额:"); int money = sc.nextInt(); System.out.println("请输入个数:"); int count = sc.nextInt(); ArrayList<Double> sendList = s.send(money,count); if(sendList == null){ System.out.println(" 余额不足..."); return; } Member m = new Member(); Member m2 = new Member(); Member m3 = new Member(); m.openHongbao(sendList); m2.openHongbao(sendList); m3.openHongbao(sendList); qz.show(); m.show(); m2.show(); m3.show(); } }
|
案例扩展:
- 如果成员的余额不为0呢,将如何处理?
- 如果群主想输入带小数的金额呢,将如何处理?
本文标题:第二部分 第十一章 3.继承的综合案例
文章作者:foreverSFJ
发布时间:2019-08-20 08:40:02
最后更新:2019-08-20 08:40:02
原始链接:Notes/Java/Basic/Part02/11_3 继承的综合案例.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!