聊聊抽象类的使用心得
抽象类是一个半接口半实现类的类,既可写抽象方法让子类实现,也可写具体方法实现自己独特的功能。
看例子:
请假类 Leave
public class Leave extends ClassTeacher{
@Override
public String content() {
return "请假内容(理由,去向,时间)";
}
}
班主任类 ClassTeacher
public abstract class ClassTeacher extends Dean {
protected final String classTeacherSignature() {
return "班主任签名 + " + content();
}
public abstract String content();
}
院长类 Dean
public abstract class Dean extends Seal{
protected final String deanSignature() {
return "院长签名 + " + classTeacherSignature();
}
protected abstract String classTeacherSignature();
}
盖章类 Seal
public abstract class Seal {
protected final String sealSignature() {
return "盖章签名 + " + deanSignature();
}
protected abstract String deanSignature();
}
main函数
public class abstractTestMain {
public static void main(String[] args) {
Leave leave = new Leave();
System.out.println(leave.content());
System.out.println(leave.classTeacherSignature());
System.out.println(leave.deanSignature());
System.out.println(leave.sealSignature());
}
}
输出
请假内容(理由,去向,时间)
班主任签名 + 请假内容(理由,去向,时间)
院长签名 + 班主任签名 + 请假内容(理由,去向,时间)
盖章签名 + 院长签名 + 班主任签名 + 请假内容(理由,去向,时间)
谈谈这里的设计:
同学们要请假外出,要自己先在请假申请书上填好请假内容,理由、去向和时间等。然后带着请假申请书找班主任签名,接着找院长签名,最后找专门负责盖章的老师盖章。
这是一个整体的流程,请假外出必须要走完这一个流程才能出校,这一流程的每一部分都是以前一步为前提的,要班主任签字你得先写请假理由,院长签字得先看到班主任的签名,盖章老师需要看到班主任和院长的签名才能盖章。
每一步都只做自己该做的事,这个事和整个流程相关,没有了不行。
在实际的项目中遇到那种需要分步完成的则可以添加抽象类和抽象方法来实现,每一步尽可能细分这一步该干的可以干的活就安排给它干,不该干的就另外新建一个抽象类将其放在新建的抽象类,这个各司其职,也能更好地通过类名来理解类实际要做的事。