发红包案例

 

 

用户 姓名,余额

 

发红包

返回值 Arraylist<Integer>  名称 send

参数:1.发多少钱: intTottalMoney

   2.分成多少份:int count

 

收红包

返回值 void    名称 receive

参数:Arraylist<Integer>

public class User {

  private String name;
  private int money;

public void show() {
  System.out.println("my name is " + name + " I have " + money );
}



public User(String name, int money) {
  super();
  this.name = name;
  this.money = money;
}

public User() {
  super();
}

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 {

  private Manager() {

}

  public Manager(String name, int money) {

    //继承user
    super(name, money);
    
}


  public ArrayList<Integer> send(int totalMoney, int count) {
    ArrayList<Integer> moneyList= new ArrayList<Integer>();

    int leftMoney = super.getMoney();
    //判断够不够发
    if (totalMoney>leftMoney) {
      System.out.println("no enoght money ");
    return moneyList;
}

    else {
      super.setMoney(leftMoney-totalMoney);
      //算每份以及剩下的
      int avg = totalMoney / count;
      int mod =totalMoney % count;

      for(int i = 0 ; i <count -1 ; i++) {

      //将每份钱放到list中 

      moneyList.add(avg);
}
      //处理最后一份钱
      int last = avg +mod;
      moneyList.add(last);
  

}


      return moneyList;

}
}

 

 

public class Member extends User {

  public Member() {

}

  public Member(String name, int money) {
    super(name, money);

}

  public void recieve(ArrayList<Integer> list) {

    //随机取一份钱
    Random random = new Random();
    int index = random.nextInt(list.size());
    //取钱  
    int delt = list.remove(index);
    int money = super.getMoney();

    //算钱
    super.setMoney(money+delt);



}



}

 

public class MainPackage {

  public static void main(String[] args) {
    Manager manager = new Manager("群主", 100);
    Member one = new Member("member a",0);
    Member two = new Member("member b",0);
    Member three = new Member("member c",0);
    manager.show();
    one.show();
    two.show();
    three.show();

    System.out.println("==================");

    ArrayList<Integer> list = new ArrayList<Integer>();
    list = manager.send(20, 3);

    one.recieve(list);
    two.recieve(list);
    three.recieve(list);
    manager.show();
    one.show();
    two.show();
    three.show();
}

}

 

【接口、多态】

接口是一种公共的规范标准(引用数据类型),最重要的是其中的抽象方法

public interfa 名称{     }

 

接口的使用

1.不能直接使用,必须有个实现类来实现该接口

  public class 实现类的名称 implements 接口名称{

}

2.接口类的实现必须覆盖重写(实现)接口中的所有抽象方法

  实现:去掉abstract关键字,加上方法体大括号

3. 创建实现类的对象,进行使用

public class Inerface {

public static void main(String[] args) {
// TODO Auto-generated method stub
  ImplementA impl = new ImplementA();
  impl.methodAbs1();
  impl.methodAbs2();
  impl.methodAbs3();
  impl.methodAbs4();
  }

}

 

 

public interface MyInterfaceAbstract {
  public abstract void methodAbs1();

  abstract void methodAbs2();
  public void methodAbs3();
  void methodAbs4();
}

 

 

public class ImplementA implements MyInterfaceAbstract {

  @Override
  public void methodAbs1() {
  // TODO Auto-generated method stub
  System.out.println("first");
}

  @Override
  public void methodAbs2() {
  // TODO Auto-generated method stub
  System.out.println("second");
}

  @Override
  public void methodAbs3() {
  // TODO Auto-generated method stub
  System.out.println("third");
}

  @Override
  public void methodAbs4() {
  // TODO Auto-generated method stub
  System.out.println("fourth");
}

 

}

如果没有复写所有方法,则这个类必须是抽象类

 

 

接口中的默认方法可以解决接口的升级问题

  1.可以通过接口类实现

  2.可以被接口类进行重写

eg

public default void methodDefault() {
  System.out.println("defalut way");
}

 

私有方法的使用
  私有方法:只有默认方法可以调用。
  私有静态方法:默认方法和静态方法可以调用。

 

 

接口中也可以定义“成员变量”,但是必须使用public static fianal 三个关键字修饰

public static fianal 数据类型  常量名称(完全大写,下划线隔开)  = 数据值(必须赋值);

一旦使用final 子不可改变

直接使用接口名称去点他就行