我正在考虑两个抽象类,第一个 GroupCalendar 会是这样的:
public abstract class GroupCalendar {
HashMap<TimeFrame, Activity> entries = new HashMap<TimeFrame, Activity>();
public abstract void addActivity(TimeFrame t, Activity a);
public abstract void removeActivity(TimeFrame t, Activity a);
public abstract void findActivity(TimeFrame t);
public abstract void printAll();
}
第二个是 Activity 类:
public abstract class Activity extends GroupCalendar {
private String name, location;
public Activity() {
}
public Activity(String name, String location) {
this.name = name;
this.location = location;
}
public abstract String getName();
public abstract void setName(String name);
public abstract String getLocation();
public abstract void setLocation(String location);
}
之后会有扩展 Activity 的具体类:
public class Sport extends Activity {
private String name, location;
private boolean outdoors;
public Sport(String name, String location, boolean outdoors) {
this.name = name;
this.location = location;
this.outdoors = outdoors;
}
@Override
public void addActivity(TimeFrame t, Activity a) {
}
@Override
public void removeActivity(TimeFrame t, Activity a) {
}
@Override
public void findActivity(TimeFrame t) {
}
@Override
public void printAll() {
}
}
问题是我无法正确添加 Activity ,如果我尝试添加运动,我得到的只是名称和位置,没有户外。 如果有人能给我一些关于我的方法有什么问题的提示/指示,那对我来说意义重大。
最佳答案
首先,我不确定您为什么要为此使用抽象类?
其次,你的日历是由 Activity 组成的, Activity 不应该具备日历的品质。单个 Activity 确实需要具有其他时间范围和 Activity 的集合,除非 Activity 是由其他 Activity 组成的。
我将有一个具体的GroupCalendar
类和一个具体的Activity
类,并且如果需要的话,重写子类中的Activity
方法。 Activity
类应该处理 Activity
成员的访问和变更,您不希望为 Activity
的每个子类覆盖这些成员。
另一方面,Activity
有一个重载的构造函数,它采用 name
和 location
。因此,在 Sport
类的重载构造函数中,您应该调用 super(name, location)
并删除不需要的赋值。
关于java - 用java创建 Activity 日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469844/