最近学习Java继承,正好学到一个不错的例子,决定拿出来给大家看看 题目以及继承关系,以及三要素,返回值类型、方法名称、参数列表 b话不多说,上代码! 首先父类用户类
User.java public class User { private String name;//姓名 private int money;//余额 /** * 无参构造 */ public User() { // TODO 自动生成的构造函数存根 } /** * 有参构造 * @param name * @param money */ public User(String name, int money) { super(); 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; } }这个没什么好说的,就是pravite name,money,其余都是自动生成的。 群主类
Manager.java public class Manager extends User { public Manager() { super(); // TODO 自动生成的构造函数存根 } public Manager(String name, int money) { super(name, money); // TODO 自动生成的构造函数存根 } public ArrayList<Integer> send(int totalMoney, int count){ ArrayList<Integer> redList = new ArrayList<Integer>(); // 看群主当前的余额 int leftMoney = super.getMoney();//获取到到余额 if (totalMoney > leftMoney) { System.out.println("余额不足"); return redList; } //扣钱,其实就是重新设置余额 super.setMoney(leftMoney - totalMoney); //发红包需要平均拆分成为count份 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; } }群员类
public class Member extends User { /** * */ public Member() { // TODO 自动生成的构造函数存根 } public Member(String name, int money) { super(name, money); // TODO 自动生成的构造函数存根 } public void receive(ArrayList<Integer> list) { // 从多个红包当中随便抽取一个,给我自己。 // 随机获取一个集合当中的索引编号,这调用了Scanner的nextInt方法 int index =new Random().nextInt(list.size()); // 根据索引,从集合当中删除,并且得到被删除的红包,给我自己 int delta = list.remove(index); // 当前成员自己本来有多少钱 int money = super.getMoney(); // 加法,并且重新设置回去 super.setMoney(money + delta); } }接下来实现发红包
public class day0919 { public static void main(String[] args) { // TODO 自动生成的方法存根 Manager manager = new Manager("群主", 100); Member one = new Member("帅群员", 0); Member two = new Member("狗管理", 0); Member three = new Member("老司机", 0); //展示原来各有的余额 manager.show(); one.show(); two.show(); three.show(); System.out.println("================="); // 20元发3个红包 ArrayList<Integer> redList = manager.send(20, 3); // 接收红包 one.receive(redList); two.receive(redList); three.receive(redList); manager.show(); one.show(); two.show(); three.show(); } }初次发帖,有不对的地方谢谢各位纠正