问题描述
我真的很难在 Java 中思考抽象和接口类吗?
这里有一个例子: 我们有 2 个用户在 School 系统中具有相同和不同的操作 老师:可以添加练习和查看练习 学生:可以查看和提交练习 我们有 2 个不同的用户,不同的动作和相同的动作。 那么我们怎样才能做到一个抽象的类和接口呢?
解决方法
不应该只有一个类 - 行为不同的事物应该由不同的类表示。
如果你想使用一个接口和一个抽象类...
为共享行为创建一个接口:
interface ExerciseViewer {
void view(Exercise exercise);
}
然后为扩展抽象基类的每种类型的人创建具体的类:
abstract class SchoolPerson implements ExerciseViewer {
public void view(Exercise exercise) {
// some implemention
}
}
class Teacher extends SchoolPerson {
public void add(Exercise exercise) {
// some implementation
}
}
class Student extends SchoolPerson {
public void submit(Exercise exercise) {
// some implementation
}
}
但是,我不会这样做。相反,我会创建两个具体的类来实现没有方法的 ExerciseViewer(请参阅 marker interface),一个 Exam 类和一个单独的 ExerciseService 类,该类处理具有适当参数类型的操作。