zoukankan      html  css  js  c++  java
  • java day4

    发红包案例

     

    用户 姓名,余额

    发红包

    返回值 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 子不可改变

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

  • 相关阅读:
    vuecli3.0 优雅使用svg
    解决vueRouter 跳转相同路由报错
    vue项目中使用 web worker 开启多线程
    项目经常使用的common.js 方法
    vue实现3D词云
    怎么禁止用户点击f12查看数据,查看网页代码,布局样式
    1:vue项目优化总结
    手写一个发布订阅
    vue3.0 reactive 理解
    ifram父子组件传参
  • 原文地址:https://www.cnblogs.com/njuwyx/p/12676652.html
Copyright © 2011-2022 走看看