抽象方法图

在这里插入图片描述
一个动物的类,那么每个动物都有吃东西的方法,但是每个动物吃的东西都不一定,那么这就是一个抽象方法,抽象方法使用abstract关键字

创建一个抽象的类 方法:

package abstractDemo;
//抽象方法,使用abstract
//抽象方法所在的类必须是抽象类才行,在class前面加上 abstract 关键字即可
public abstract class Animal {
    //这是一个吃东西的抽象方法,代表吃东西,具体吃什么不确定;
    public abstract void eat();
    //这是普通的成员方法
    public void normalMethod(){

    }
}

//继承抽象类重写抽象方法

package abstractDemo;

public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("鱼");
    }
}

//使用抽象出来的方法new对象使用

package abstractDemo;

public class DemoMain {
    public static void main(String[] args) {
        Cat a = new Cat();
        a.eat();
    }
}

如何使用抽象类和抽象方法
1、不能直接new抽象类对象;
2、必须通过子类继承抽象类
3、子类必须覆盖重写抽象父类当中所有的抽象方法;
4、创建子类对象直接使用

小练习:
发红包 抢红包

package RedpacketDemo;

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

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void show(){
        System.out.println("{" +"name:" +name +"money:"+money+"}");
    }
}

发红包功能

package RedpacketDemo;

import java.util.ArrayList;

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

    public Manage(int money, String name) {
        super(money, name);
    }

    //包红包放列表里
    public ArrayList<Integer> setRedPacket(int money,int count){
        ArrayList<Integer> list = new ArrayList<>();
        if(money>getMoney()){
            System.out.println("money不足");
            return null;
        }
        int vag = money/count;//红包的平均额度
        int excess = money%count;//红包平均额度的出现除不尽情况下产生的余数
        int  excessSum = vag + excess;//余数加上红包平均额度
        //只处理传递进来的红包数-1 剩余的1个用来解决余数红包
        for (int i = 0; i < count-1; i++) {
            list.add(vag);
        }
        list.add(excessSum);
        return list;
    }
}

群员抢红包

package RedpacketDemo;

import java.util.ArrayList;
import java.util.Random;

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

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

    public void getRedpacket(ArrayList<Integer> list){
        //获取红包列表的索引值;0-N
        int index = new Random().nextInt(list.size());
        //把索引值里的元素(额度)拿出来赋值给自己的金钱额度并且删除
//        this.setMoney()
         this.setMoney(this.getMoney() + list.remove(index));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值