100天程式碼提升計劃-第16天
阿新 • • 發佈:2022-03-19
抽象類方法的注意事項
1.抽象類不能建立物件
2抽象類中可以構造方法,是供子類建立物件時,初始化父類成員使用的
3.抽象類中不一定包含抽象方法,但是有抽象方法的類一定時抽象類
4.抽象類的子類必須重寫父類中所有的抽象方法,除非子類也是抽象類
練習:發紅包
思路
1.群主發紅包,成員領紅包,群主和成員有公共因素
2.公共部分為父類
3.群主裡面應該有發紅包的方法,成員有收紅包的方法 //子類
程式碼
父類
package Fahongbao; public class User { private String name; private int money; publicUser() { } 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(); } }