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();

    }
}

 

posted @ 2022-03-18 23:28  软测成长者  阅读(24)  评论(0)    收藏  举报