gpt4 book ai didi

java - 子类问题(JAVA)

转载 作者:行者123 更新时间:2023-12-01 10:22:32 25 4
gpt4 key购买 nike

我有一个带有字段的Appointment类:

  • 国际日
  • 整月
  • 年份
  • 字符串描述

这存储约会的描述以及日期。

super 类预约:

public class Appointment {
int dayNum;
int monthNum;
int yearNum;
String desc;

public Appointment(String des, int day) {
//Monthly Appointments (Check day)
desc = des;
dayNum = day;
}
public Appointment(String des, int day, int month){
//Yearly Appointments (Check day AND month)
desc = des;
dayNum = day;
monthNum = month;
}
public Appointment(String des, int day, int month, int year){
//One Time (Check All)
desc = des;
dayNum = day;
monthNum = month;
yearNum = year;
}
}

这是我的 3 个子类:

一次性约会: 一次性

public class OneTime extends Appointment{
public OneTime(String des, int day, int month, int year){
super(des, day, month, year);
}
public String getDesc(){
return desc;
}
}

每月一次约会: 每月

public class Monthly extends Appointment{
public Monthly(String des, int monum){
super(des, monum);
}
public String getDesc(){
return desc;
}
}

每年一次约会 每年

public class Yearly extends Appointment{
public Yearly(String des, int day, int month){
super(des, day, month);
}
public String getDesc(){
return desc;
}
}

问题:我被要求将一些不同的Appointment对象添加到ArrayList(我知道)。但是,我必须编写一个方法 occurrsOn(int day, int Month, intyear) 来返回当天的所有约会。我不确定的部分是编写 occurrsOn() 方法。假设我有一个 11/22/2018 的约会,我如何将每月对象与日期参数进行比较/每年与月份和日期参数进行比较/OneTime与所有参数进行比较?

教科书问题:“实现父类(super class)Appointment和子类OnetimeDailyMonthly 。约会有描述(例如,“看牙医”)和日期。编写一个方法 occurrsOn(intyear, intmonth,intday) 来检查约会是否发生在该日期。例如,对于每月的约会,您必须检查该月的日期是否匹配。然后用约会的混合填充 Appointment 对象的数组。让用户输入日期并打印出该日期发生的所有约会。”

注意:这不是我的作业。我刚刚在 2 小时内对此进行了单元测试,但遇到了困难。

最佳答案

首先,您可能需要声明 Appointment 抽象,以便子类必须实现一些方法:

 public abstract class Appointment {

int dayNum;
int monthNum;
int yearNum;
String desc;

public Appointment(String des, int day){desc = des; dayNum = day;} //Monthly Appointments (Check day)
public Appointment(String des, int day, int month){desc = des; dayNum = day; monthNum = month;} //Yearly Appointments (Check day AND month)
public Appointment(String des, int day, int month, int year){desc = des; dayNum = day; monthNum = month; yearNum = year;} //One Time (Check All)

abstract boolean occursOn(int day, int month, int year);

abstract String getDesc();

}

然后,您的类中 occurrsOn 的实现可能是:

每月

    boolean occursOn(int day, int month, int year){

return (this.day == day);
}

每年

    boolean occursOn(int day, int month, int year){

return (this.day == day) && (this.month == month);
}

一次性

    boolean occursOn(int day, int month, int year){

return (this.day == day) && (this.month == month) && (this.year == year);
}

最后,假设 appointments 是一个用子类的各种实例填充的 List,有一个通用方法(可能在您的主类中),它将返回所有相应 Appointment 对象的列表:

public List<Appointment> occursOn(int year, int month, int day){

List<Appointment> result = new ArrayList<Appointment>();

for(Appointment appointment : appointments){

if(appointment.occursOn(year, month, day))
result.add(appointment);
}

return result;

}

关于java - 子类问题(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35484021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com