【Java】继承、抽象 平均发红包案例

Java语言继承的特点:
单继承、多级继承、一个子类的直接父类是唯一的,但是一个父类可以拥有很多个子类

抽象类和抽象方法的使用
1、不能直接创建new抽象类对象
2、必须一个子类来继承抽象父类
3、子类必须覆盖重写抽象父类当中的所有抽象方法
@Override
覆盖重写(实现):去掉抽象方法的abstract关键字,补全{}内容
注意:
一个抽象类不一定含有抽象方法,但是含有抽象方法的类一定是抽象类。
【没有抽象方法的类也不可以直接创建对象,在一些特殊场景下有用途】

发红包案例
成员类

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;
	}
	
}

管理员类(发红包的人)

public class Manager extends User {
	public Manager() {
		
	}
	public Manager(String name,int money) {
		super(name,money);
	}
	
	public ArrayList<Integer> send(int totalMoney,int number){
		ArrayList<Integer> list = new ArrayList<>();
		if(super.getMoney()<totalMoney) {
			System.out.println("余额不足!!!");
			return list;    //返回空数组
		}
		super.setMoney(super.getMoney()-totalMoney);
		int avg = totalMoney  /number;
		int left = totalMoney % number;
		for(int i=0;i<number-1;i++) {
			list.add(avg);
		}
		list.add(avg+left); //把余数加在最后一个红包中
		return list;
		
	}  
}

普通成员类(抢红包的人)

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 temp = list.remove(index); //删除随机选中的红包,加给自己的余额,并删除该红包
		System.out.println("恭喜你抢到了"+temp+"元");
		super.setMoney(super.getMoney()+temp);
	}
}

主函数:

public class Test {

	public static void main(String[] args) {
		Manager manager = new Manager("管理员",200);
		Member member1 = new Member("小王",50);
		Member member2 = new Member("小黄",50);
		Member member3 = new Member("小申",90);
		manager.show();
		member1.show();
		member2.show();
		member3.show();
		System.out.println("============");
		ArrayList<Integer> list = manager.send(88, 3);
		member1.receive(list);
		member2.receive(list);
		member3.receive(list);
		System.out.println("============");
		manager.show();
		member1.show();
		member2.show();
		member3.show();	
}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值