Java语言继承的特点:
单继承、多级继承、一个子类的直接父类是唯一的,但是一个父类可以拥有很多个子类
抽象类和抽象方法的使用:
1、不能直接创建new抽象类对象
2、必须一个子类来继承抽象父类
3、子类必须覆盖重写抽象父类当中的所有抽象方法
@Override
覆盖重写(实现):去掉抽象方法的abstract关键字,补全{}内容
注意:
一个抽象类不一定含有抽象方法,但是含有抽象方法的类一定是抽象类。
【没有抽象方法的类也不可以直接创建对象,在一些特殊场景下有用途】
发红包案例
成员类
public class User {
private String name;//姓名
private int money;//余额
public User() {
}
public User(String name,int money) {
this.name = name;
this.money = money;
}
public void show() {
System.out.println("姓名:"+name+" 余额:"+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 class Manager extends User {
public Manager() {
}
public Manager(String name,int money) {
super(name,money);
}
public ArrayList<Integer> send(int totalMoney,int number){
ArrayList<Integer> list = new ArrayList<>();
if(super.getMoney()<totalMoney) {
System.out.println("余额不足!!!");
return list; //返回空数组
}
super.setMoney(super.getMoney()-totalMoney);
int avg = totalMoney /number;
int left = totalMoney % number;
for(int i=0;i<number-1;i++) {
list.add(avg);
}
list.add(avg+left); //把余数加在最后一个红包中
return list;
}
}
普通成员类(抢红包的人)
public class Member extends User {
public Member() {
}
public Member(String name,int money) {
super(name,money);
}
public void receive(ArrayList<Integer> list) {
int index = new Random().nextInt(list.size());
int temp = list.remove(index); //删除随机选中的红包,加给自己的余额,并删除该红包
System.out.println("恭喜你抢到了"+temp+"元");
super.setMoney(super.getMoney()+temp);
}
}
主函数:
public class Test {
public static void main(String[] args) {
Manager manager = new Manager("管理员",200);
Member member1 = new Member("小王",50);
Member member2 = new Member("小黄",50);
Member member3 = new Member("小申",90);
manager.show();
member1.show();
member2.show();
member3.show();
System.out.println("============");
ArrayList<Integer> list = manager.send(88, 3);
member1.receive(list);
member2.receive(list);
member3.receive(list);
System.out.println("============");
manager.show();
member1.show();
member2.show();
member3.show();
}
}