(如有问题,欢迎各位大佬批评指正)
Java发红包案例(继承的应用)
特点
- 子类可以拥有父类的内容
- 子类还可以有自己的专属内容
- 子类就是一个父类(子类也可以被当做父类看待)
super关键字
- 子类构造方法中有一个默认隐含的**super()**调用,所以一定是先调用父类的构造,然后执行子类的构造
- 子类构造可以通过super关键字来调用父类的构造
- 使用super调用父类的构造方法时,super语句必须是子类构造方法的第一个语句
super关键字的使用
- 在子类的成员方法中,访问父类的成员变量
- 在子类的成员方法中,访问父类的成员方法
- 在子类的构造方法中,访问父类的构造方法
红包案例
分析
- 首先在一个群里面群主进行分发红包
- 普通成员收红包
- 群主和普通成员都是群成员
首先根据分析我们可以创建一个群成员类(User)
public class User {
String name;//姓名
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;
}
}
创建一个群主类
import java.util.ArrayList;
public class Manager extends User {
public Manager () {
}
//从父类继承过来的构造方法
public Manager(String name, int money) {
super(name, money);
}
//需要一个集合用来储存红包
ArrayList<Integer> redList = new ArrayList<Integer>();
//拿到群主余额
int leftMoney = super.getMoney();
//发送包 sendMoney是要发的钱,cout是分成几个红包
public ArrayList<Integer> send (int sendMoney, int count){
//把余额放到集合中
//判断红包金额是否大于余额
if (leftMoney - sendMoney < 0) {
System.out.println("余额不足");
return redList;
}
int avg = sendMoney / count;
//把金额平均放进集合中
for (int i = 0; i < count - 1; i++) {
redList.add(avg);
}
//定义mod保存余数
int mod = sendMoney % count;
//把余数放到一个红包内
int last = avg + mod;
redList.add(last);
//群主剩余的钱
super.setMoney(leftMoney - sendMoney);
return redList;
}
}
创建普通成员类
import java.util.ArrayList;
import java.util.Random;
public class Member extends User {
public Member() {
}
public Member(String name, int money) {
super(name, money);
}
//收红包
public void receive(ArrayList<Integer> redList){
//随机抽取一个红包给自己,随机获取其中的集合编号
//我们使用Random获取集合的编号,集合的长度就是随机数的范围
int index = new Random().nextInt(redList.size());
//remove方法根据索引移除并返回该移除的对象
int delta = resList.remove(index);
//原先有多少钱
int money = super.getMoney();
//最终的余额
super.setMoney((money + delta));
}
}
准备好之后我们可以试一下效果
import java.util.ArrayList;
public class Demo01 {
public static void main(String[] args) {
//创建一个群主
Manager manager = new Manager("群主", 100);
//创建群成员
Member one = new Member("张三", 0);
Member tow = new Member("李四", 0);
Member three = new Member("王五", 0);
//发红包之前各个成员的余额
manager.show();
one.show();
tow.show();
three.show();
System.out.println("------------");
//群主发红包
ArrayList<Integer> redList = manager.send(20, 3)
//成员收红包
one.receive(redList);
tow.receive(redList);
three.receive(redList);
System.out.println("------------");
//红包之后各个成员的余额
manager.show();
one.show();
tow.show();
three.show();
}
}
最终结果如下