100天代码提升计划-第16天
抽象类方法的注意事项
1.抽象类不能创建对象
2抽象类中可以构造方法,是供子类创建对象时,初始化父类成员使用的
3.抽象类中不一定包含抽象方法,但是有抽象方法的类一定时抽象类
4.抽象类的子类必须重写父类中所有的抽象方法,除非子类也是抽象类
练习:发红包
思路
1.群主发红包,成员领红包,群主和成员有公共因素
2.公共部分为父类
3.群主里面应该有发红包的方法,成员有收红包的方法 //子类
代码
父类
package Fahongbao; 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; } }
子类
//群主发红包
package Fahongbao; import java.util.ArrayList; //yfdq=要发的钱 yuer =余额 public class Groupleader extends User { public Groupleader(){ } public Groupleader(String name, int money) { super(name, money); } public ArrayList<Integer> send(int ysdq,int count){ ArrayList<Integer> readlist=new ArrayList<Integer>();//定义一个新的集合 int yuer=super.getMoney();//余额得去父类里面看一下 if (ysdq>yuer){ System.out.println("余额不足!!"); return readlist; } super.setMoney(yuer-ysdq);//发完钱以后把剩下的钱还回去 int avg = ysdq/count; int yushu=ysdq%count;//余出来的钱给最后一个红包 for (int i = 0; i < count-1; i++) { readlist.add(avg); } int last=avg+yushu; readlist.add(last); return readlist; } }
//成员收红包
package Fahongbao; 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>list){ int index=new Random().nextInt(list.size());//在集合中随机获取索引值 int delta = list.remove(index);//在集合中删掉已经获取的钱 int money =super.getMoney();//本来有多少钱 super.setMoney(money+delta);//最新的钱数 } }
主方法
package Fahongbao; import java.util.ArrayList; public class Main { public static void main(String[] args) { Groupleader qunzhu =new Groupleader("群主",500); Member chengyuan1=new Member("张三",0); Member chengyuan2=new Member("李四",0); Member chengyuan3=new Member("王五",0); qunzhu.show(); chengyuan1.show(); chengyuan2.show(); chengyuan3.show(); ArrayList<Integer> redlist=qunzhu.send(9,3);//群主发多少钱 chengyuan1.receive(redlist);//成员领钱 chengyuan2.receive(redlist);//成员领钱 chengyuan3.receive(redlist);//成员领钱 //更新后的钱 qunzhu.show(); chengyuan1.show(); chengyuan2.show(); chengyuan3.show(); } }

浙公网安备 33010602011771号