JAVA的override的问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 08:48:53
创建一个类CollegeCourse包含课程名 课程号 学分和费用几项变量。然后费用是学分*$120。
然后创建一个子类LabCourse 包含相同的变量,只是多出了50刀的labfee。
两个类都有一个相同的display()方法,用来显示所有的变量。
应用类是UseCourse,要求输入课程名,课程号,学分,并显示出课程名,课程号,学分和费用。
当课程名输入的是“BIO”,"CHM","CIS","PHY"当中的一个的时候,就创建一个Labcourse,否则就创建一个collegecourse.并且输出课程名 课程号 学分和费用这些信息。

http://hi.baidu.com/creep_w/blog/item/fa8a81f01f0a0d19b07ec596.html这里是我写的这三个类。但是又两个问题,第一个是如果我输入“BIO”,"CHM","CIS","PHY"当中的一个的时候,输出的依然是 CollegeCourse里的display(),而不是LabCourse里的display().第二,我总觉得我在应用类里写的那些if语句很别扭,是不是有别的方法可以来判断是创建CollegeCourse还是LabCourse啊~~

哪位大侠能帮我看看啊~~

//问题出在你UseCourse的判断语句里
你只要第一个输入的不是 PHY, 你的 display 就会执行两次,
所以建议你改成如下语句
if (name1.equals("PHY") ||name1.equals("CIS")|| name1.equals("CHM")||name1.equals("BIO")) {
Lab.ReadNewCourse(name1, coursenum1, credit1);
Lab.display();
} else {
Newcourse.ReadNewCourse(name1, coursenum1, credit1);
Newcourse.display();
}

我看了一下你的代码,你写的大概没有问题,结果是CollegeCourse里的display()和LabCourse里的display()都调用了,那是因为你的if语句有问题改成这样你试试:
if (name1.equals("BIO")) {
Lab.ReadNewCourse(name1, coursenum1, credit1);
Lab.display();
}
else if (name1.equals("CHM")) {
Lab.ReadNewCourse(name1, coursenum1, credit1);
Lab.display();
}
else if (name1.equals("CIS")) {
Lab.ReadNewCourse(name1, coursenum1, credit1);
Lab.display();
}
else if (name1.equals("PHY")) {
Lab.ReadNewCourse(name1, co