定义一个用户类
public class User {
private String name;
private int money;
public User() {
}
public User(String name, int money) {
this.name = name;
this.money = money;
}
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 void show() {
System.out.println("我叫" + name + ",有" + money + "元");
}
}
定义一个群主类,继承用户类
public class Manager extends User {
public Manager() {
}
public Manager(String name, int money) {
super(name, money);
}
public ArrayList<Integer> prepare(int giveMoney, int count) {
ArrayList<Integer> arrayList = new ArrayList<>();
int haveMoney = getMoney();
//前面可以加上一个super , super.getMoney()
if (haveMoney < giveMoney) {
System.out.println("余额不足,请重新输入!");
return arrayList;
}
setMoney(haveMoney - giveMoney);
//前面可以加上一个super , super.setMoney(haveMoney - giveMoney)
int avg = giveMoney / count;
int mod = giveMoney % count;
for (int i = 0; i < count; i++) {
if (i == count - 1) {
arrayList.add(avg + mod);
} else {
arrayList.add(avg);
}
}
return arrayList;
}
}
定义一个群员类,继承用户类
public class Member extends User {
public Member() {
}
public Member(String name, int money) {
super(name, money);
}
public void receive(ArrayList<Integer>arrayList){
int haveMoney = getMoney();
//前面可以加上一个super
int num = new Random().nextInt(arrayList.size());
Integer getMoney = arrayList.remove(num);
setMoney(haveMoney+getMoney);
//前面可以加上一个super
}
}
测试类
public class Test {
public static void main(String[] args) {
Manager manager = new Manager("夏萤", 10000);
Member member1 = new Member("程文林", 5000);
Member member2 = new Member("丁昊", 0);
Member member3 = new Member("李友峰", 0);
manager.show();
member1.show();
member2.show();
member3.show();
System.out.println("============");
ArrayList<Integer> arr = manager.prepare(5000, 3);
member1.receive(arr);
member2.receive(arr);
member3.receive(arr);
manager.show();
member1.show();
member2.show();
member3.show();
}
}
测试结果
我叫夏萤,有10000元
我叫程文林,有5000元
我叫丁昊,有0元
我叫李友峰,有0元
============
我叫夏萤,有5000元
我叫程文林,有6666元
我叫丁昊,有1666元
我叫李友峰,有1668元
========================================================================================================================================================
注意事项
(1)第一个:当User类的成员变量没有被私有化时,他的子类如Member类该怎么构造
public class User {
private String name;
int money;
//空参
//全参
//get方法
//set方法
}
public class Manager extends User {
public Manager() {
//默认有一个super()构造
}
public Manager(String name, int money) {
//默认的super()无法赋值,需要重载的super构造或者其他
//第一种写法
super(name, money);
//第二种写法
this.name = name;
this. money = money;
//第三种写法(父类没有私有成员却依然写了该成员的getset方法时)
super.setName(name);
setMoney(money);//super可以省略不写,因为没有重复的,不会产生冲突
}
}
(2)第二个:当User类的成员变量被私有化时,他的子类如Member类该怎么构造
public class User {
private String name;
private int money;
//空参
//全参
//get方法
//set方法
}
public class Manager extends User {
public Manager() {
//默认有一个super()构造
}
public Manager(String name, int money) {
//默认的super()无法赋值,需要重载的super构造或者其他
//第一种写法
super(name, money);
// //第二种写法
super.setName(name);
setMoney(money);//super可以省略不写,因为没有重复的,不会产生冲突
}
}