一个动物的类,那么每个动物都有吃东西的方法,但是每个动物吃的东西都不一定,那么这就是一个抽象方法,抽象方法使用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));
}
}