抽象的应用---发红包的例子

发红包涉及两个对象

群主和成员,他们都有姓名 余额 等属性,简单起见就用这俩。抽象出来有一个类User

public abstract class User {
private string name;
private int money;
//构造函数用来生成具体的name money,在子类的构造函数调用super.User()创建具体对象的name,money
public User(){}//无参数构造 alt+shift+s ,然后再按一下“c”。
public User (string name  int  money){ 
//有参数构造,在编译器中有快捷键“alt+shift+s”,然后再按一下“o”。
this.name=name;
this.moey =money;
}
//“alt+shift+s”,然后再按一下“r”。来设置get,set 方法。
}

群主类

拥有类的一般方法和send方法。方法三要素返回值,方法名,传参。
他要发红包需要两个参数红包钱数和数量,返回值类型应该返回一个红包集合,每个红包多少钱ArrayList存放集合相关

public class Manger extends User {
//使用user类的构造方法
public Manger ( string name  int money){
super(name,money);
}
public Manger (){}
//写方法
public ArrayList<Interger> send (int TotalMoney,int count){
//定义集合放红包
ArrayList <Interger> list= new ArrayList();
//先判断是否有钱发红包
if(TotalMoney>super.getmoney){
print("钱不够")
return list;
}
//钱够时分红包,发完记得减去红包的钱数
int  hongbao =TotalMoney/ count;
//除不尽时把余数加到最后一个。
int last =TotalMoney%count+hongbao;
suoer.setMoney(money-TotalMoney)
//存入集合
for(int i=0;i<count-1;i++){ //先放前几个,最后一个单独放
list.add(hongbao);
}
list.add(last);
}
return list;
}

成员类

类似群主,只是有一个收红包的方法。参数:红包列表。返回值:int 名字:receive()

public class number extends User{
//构造函数
public number(){}
public number(string name,int miney){
super(name,money);
}
public void receive(ArrayList<Interger> list){  //如何传入集合??调用群主的send返回值是一个集合,将其赋值到一个变量传入。
//从集合随机抽红包
int index = new radom().nextInt(list.size);
//红包减去一份
list.remove(index);
super.setMoney(super.getmoney+list[index]);//成员加钱

}

}

main函数

 Manger manger =new Manger("老李",300);
 number num1 =new num("成员1",0);
 number num2 =new num("成员2",0);
 number num3 =new num("成员3",0);
 
 ArrayList<Interger> list =manger.send(100,3); //发钱
 num.receive(list);//收钱
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值