Java 扩展 Java 类 并覆盖他们的方法
Java Extending Java Classes and Overriding Their Methods
我要创建一个 Java 定义一个 class 的控制台应用程序,将其扩展到另外两个 classes,覆盖所有三个 class 的 toString() ]es,将 classes 实例化为三个对象,在这些对象上调用 toString(),并打印出每个 toString() 调用的 return 值。
应用程序将从 Course、FlexPathCourse 和 GuidedPathCourse 中实例化三个对象,并调用它们相应的 toString() 方法。
我有下面的代码。但是对于 FlexPathCourse.java 和 GuidedPathCourse.java,我在 "super(code1, hours, title1)" 所在的位置收到一条错误消息 "Constructor object in class object cannot be applied to given types"。你能解释一下这意味着什么以及我应该怎么做吗?提前谢谢你。
Main Class
public class U1A1_InheritOverridetoString {
public static void main(String[] args) {
Course c1 = new Course("TBD", 3, "TBD");
FlexPathCourse c2 = new FlexPathCourse("IT2230", 3, "Introduction to Database Systems");
GuidedPathCourse c3 = new GuidedPathCourse("ITFP4739", 3, "Mobile Cloud Computing Application Development");
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
Course.java
public class Course {
protected String code;
protected int creditHours;
protected String title;
public Course(String code1, int hours, String title1){
code = code1;
creditHours = hours;
title = title1;
}
@Override
public String toString(){
return "Java class name = 'Course' " + "Course Code = " + code;
}
}
FlexPathCourse.java
public class FlexPathCourse {
private String optionalResources;
public FlexPathCourse (String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'FlexPathCourse' " + "Course Code = " + code;
}
}
GuidedPathCourse.java
public class GuidedPathCourse {
private String requiredResources;
private int duration;
public GuidedPathCourse(String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
}
}
在您的 GuidedPathCourse 和 FlexPathCourse 中添加 extends Course
,如下所示:
public class GuidedPathCourse extends Course {
好像你错过了扩展你的课程class喜欢,
public class FlexPathCourse extends Course
或
public class GuidedPathCourse extends Course
Super 引用它扩展的 class。
[SuperClass] -> [class]
你的情况
[Course] -> [FlexPathCourse]
-> [GuidedPathCourse]
为了告诉Java这个关系(继承),你需要使用extends
例如:public class FlexPathCourse extends Course { ... }
之后你可以使用继承属性,比如多态性,这是Java中的一个重要特征。
在此link中解释:https://www.w3schools.com/java/java_polymorphism.asp
关于错误
Constructor object in class object cannot be applied to given types
意味着您没有声明这样的构造函数,这将在您扩展 class 时解决,因为现在它可以识别您在课程 class[ 中声明的 super() 构造函数=16=]
如果你想扩展一个 class 你应该在声明另一个时使用扩展 class
public class GuidedPathCourse extends Course{
private String requiredResources;
private int duration;
public GuidedPathCourse(String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
}
}
与 FlexPathCourse 相同
我要创建一个 Java 定义一个 class 的控制台应用程序,将其扩展到另外两个 classes,覆盖所有三个 class 的 toString() ]es,将 classes 实例化为三个对象,在这些对象上调用 toString(),并打印出每个 toString() 调用的 return 值。
应用程序将从 Course、FlexPathCourse 和 GuidedPathCourse 中实例化三个对象,并调用它们相应的 toString() 方法。
我有下面的代码。但是对于 FlexPathCourse.java 和 GuidedPathCourse.java,我在 "super(code1, hours, title1)" 所在的位置收到一条错误消息 "Constructor object in class object cannot be applied to given types"。你能解释一下这意味着什么以及我应该怎么做吗?提前谢谢你。
Main Class
public class U1A1_InheritOverridetoString {
public static void main(String[] args) {
Course c1 = new Course("TBD", 3, "TBD");
FlexPathCourse c2 = new FlexPathCourse("IT2230", 3, "Introduction to Database Systems");
GuidedPathCourse c3 = new GuidedPathCourse("ITFP4739", 3, "Mobile Cloud Computing Application Development");
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
Course.java
public class Course {
protected String code;
protected int creditHours;
protected String title;
public Course(String code1, int hours, String title1){
code = code1;
creditHours = hours;
title = title1;
}
@Override
public String toString(){
return "Java class name = 'Course' " + "Course Code = " + code;
}
}
FlexPathCourse.java
public class FlexPathCourse {
private String optionalResources;
public FlexPathCourse (String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'FlexPathCourse' " + "Course Code = " + code;
}
}
GuidedPathCourse.java
public class GuidedPathCourse {
private String requiredResources;
private int duration;
public GuidedPathCourse(String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
}
}
在您的 GuidedPathCourse 和 FlexPathCourse 中添加 extends Course
,如下所示:
public class GuidedPathCourse extends Course {
好像你错过了扩展你的课程class喜欢,
public class FlexPathCourse extends Course
或
public class GuidedPathCourse extends Course
Super 引用它扩展的 class。
[SuperClass] -> [class]
你的情况
[Course] -> [FlexPathCourse]
-> [GuidedPathCourse]
为了告诉Java这个关系(继承),你需要使用extends
例如:public class FlexPathCourse extends Course { ... }
之后你可以使用继承属性,比如多态性,这是Java中的一个重要特征。
在此link中解释:https://www.w3schools.com/java/java_polymorphism.asp
关于错误
Constructor object in class object cannot be applied to given types
意味着您没有声明这样的构造函数,这将在您扩展 class 时解决,因为现在它可以识别您在课程 class[ 中声明的 super() 构造函数=16=]
如果你想扩展一个 class 你应该在声明另一个时使用扩展 class
public class GuidedPathCourse extends Course{
private String requiredResources;
private int duration;
public GuidedPathCourse(String code1, int hours, String title1){
super(code1, hours, title1);
}
@Override
public String toString(){
return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
}
}
与 FlexPathCourse 相同