发红包案例
用户 姓名,余额
发红包
返回值 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 子不可改变
直接使用接口名称去点他就行