java管理学习_java学习 学生管理系统-v4.0 抽象类

java学习 学生管理系统-v4.0

本次将使用抽象类来对上次的学生管理系统-v3.0进行改进。

抽象类

抽象方法

当我们在父类中编写了一个所有子类都一定会有,但是每个子类具体的方法内容又不一样的方法,这个方法就可以写成抽象方法;

思考: 为什么一定要在父类中写所有子类都有,但是内容又不一样的方法呢?

答: 是因为父类一旦编写了这样的方法,所有的子类都必须强制性重写;

抽象类

包含了抽象方法的类一定是抽象类;

是不是抽象类就一定会包含抽象方法呢?

答: 不一定;

如何编写抽象方法和抽象类

//抽象类

public abstract class 类名{

//抽象方法 子类一定会重写该方法

public abstract 返回值类型 方法名(形参);

}

抽象类的注意事项

抽象类不能实例化

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

可以有构造方法

抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类

代码实现

抽象类修改StudentDAO

上篇我们对StudentDAO做了继承处理,将重复的代码提取到其父类BaseStudentDAO中去。但是我们要想换一种方式来存贮数据,或者说,不用列表而用数组的形式来操作,这样做虽然方法都一样,但是方法中的内容却大不同,因此我们需要用到抽象类来修改之前的BaseStudfentDAO。

public abstract class BaseStudentDAO {

//添加学生操作

public abstract boolean addStudent(Student stu);

//查询所有学生

public abstract ArrayList findAllStudent();

//删除学生操作

public abstract boolean delStudent(Integer id);

//修改该id的对象属性

public abstract boolean editStudent(Student newStu);

}

这样只要继承了BaseStudentDAO的子类,就必须重写其父类中的抽象方法,这样就实现了各个子类中内容不同。

使用静态代码块实现列表中学生初始化添加

来StudfentDAO中添加静态代码块,静态代码块会随着类加载的时候执行,且只执行一次,所以可以进行一些数据初始化的操作。

private static ArrayList list = new ArrayList<>();

static {

list.add(new Student(1001, "张三", 23, "1996-10-14"));

list.add(new Student(1002, "李四", 24, "1997-09-15"));

list.add(new Student(1002, "王五", 25, "1998-08-16"));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值