luliyu-java-day08

本文通过一个Java实现的红包抢夺案例,展示了如何创建用户类、群主发红包类以及成员抢红包类。同时,介绍了接口的概念,包括抽象方法、默认方法、静态方法和私有方法,并提供了接口的使用示例。案例中,群主马云发出100元的红包,被三位成员抢夺,最后展示了各自的余额变化。此外,还讨论了类与接口的关系,强调了非抽象子类实现接口时必须重写所有抽象方法。
摘要由CSDN通过智能技术生成

抢红包案例

package com.claire.day08.redbag;

public class User {

    private String username; // 用户名

    private double leftMoney; // 余额

    public User() {
    }

    public User(String username, double leftMoney) {
        this.username = username;
        this.leftMoney = leftMoney;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public double getLeftMoney() {
        return leftMoney;
    }

    public void setLeftMoney(double leftMoney) {
        this.leftMoney = leftMoney;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", leftMoney=" + leftMoney +
                '}';
    }
}

package com.claire.day08.redbag;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Random;

public class Member extends User{
    public Member() {
    }

    public Member(String username, double leftMoney) {
        super(username, leftMoney);
    }
    // 开红包
    public void open(ArrayList<Double> list){
        Random random = new Random();
        int index = random.nextInt(list.size());

        Double money = list.remove(index);
        this.setLeftMoney(money+this.getLeftMoney());

    }


}


package com.claire.day08.redbag;

import java.util.ArrayList;

public class QunZhu extends User{

    public QunZhu() {
    }

    public QunZhu(String username, double leftMoney) {
        super(username, leftMoney);
    }
    // 发红包
    public ArrayList<Double> send(int money, int count){
        // 判断
        double leftMoney = this.getLeftMoney();
        if(money > leftMoney)
            return null;
        // 更新群主的余额
        this.setLeftMoney(leftMoney-money);
        // 变成分
        money *= 100;
        // 每一份的金额  分
        int m = money/count;
        // 求余数
        int l = money%count;
        ArrayList<Double> list = new ArrayList<>();
        for (int i = 0; i < count-1; i++) {
            list.add(m/100.0);
        }
        if (l == 0)
            list.add(m/100.0);
        else
            list.add((m+l)/100.0); // 不能整除

        return list;
    }


}

测试


package com.claire.day08.redbag;

import java.util.ArrayList;
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {


        QunZhu qunzhu = new QunZhu("马云", 200);

        ArrayList<Double> list = qunzhu.send(100, 3);
        System.out.println(list);


        Member member1 = new Member("张三", 10);
        Member member2 = new Member("李四", 5);
        Member member3 = new Member("王五", 2000);

        member1.open(list);
        member2.open(list);
        member3.open(list);

        System.out.println(qunzhu);
        System.out.println(member1);
        System.out.println(member2);
        System.out.println(member3);

    }
}

接口

接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7及以前),默认方法和静态方法(JDK8),私有方法(JDK9)

接口的定义,它与定义类方式相似,但是不是类,而是另外一种引用数据类型接口的使用,它不能创建对象,但是可以被实现(implements,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。

版本定义示例


package com.claire.day08.demo;

public interface Demo {
    // 抽象方法 包含抽象方法(JDK7及以前)
    public abstract void method1();
    // 默认方法 ,默认方法和静态方法(JDK8)
    public default void method2(){
        System.out.println("哈哈");
    }
    // 静态方法
    public static void method3(){
        System.out.println("哈哈");
    }
    // 私有方法 (JDK9)
    private void method4(){

    }
}

类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用implements关键字。
非抽象子类实现接口:
1.
必须重写接口中所有抽象方法。
2.
继承了接口的默认方法,即可以直接调用,也可以重写。

示例

public interface LiveAble {

    public void eat();
    public void sleep();
}
public abstract class Animal  implements LiveAble{
    private String name;

    public void drink(){
        System.out.println("喝水中");
    }

}
public class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("小猫在喵喵的吃");
    }

    @Override
    public void sleep() {
        System.out.println("小猫在安静的睡");

    }
}
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.eat();
        cat.sleep();
        cat.drink();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值