Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您好,在Java中,我对在main方法中将构造函数调用到对象中感到有点困惑。下面是一个例子_Java_Class_Oop_Constructor - Fatal编程技术网

您好,在Java中,我对在main方法中将构造函数调用到对象中感到有点困惑。下面是一个例子

您好,在Java中,我对在main方法中将构造函数调用到对象中感到有点困惑。下面是一个例子,java,class,oop,constructor,Java,Class,Oop,Constructor,当我试图在main方法中创建一个Course对象时,eclipse说构造函数Course是未定义的,我不知道它为什么会发生 这是我的课程班及其结构 public class Course{ private String CourseCode; private String day; private int StudentCount; private int Capacity; private double averageGrade; public Course(String

当我试图在main方法中创建一个Course对象时,eclipse说构造函数Course是未定义的,我不知道它为什么会发生

这是我的课程班及其结构

public class Course{
    
private String CourseCode;

private String day;

private int StudentCount;

private int Capacity;

private double averageGrade;


public Course(String CourseCode, String day, int StudentCount, int Capacity, double averageGrade){
this.CourseCode=CourseCode;

this.day = day;

this.StudentCount =StudentCount;

this.Capacity = Capacity;

this.averageGrade =averageGrade; 
}
主要方法是尝试创建一个名为Course的对象

Course c = new Course();

既然已经定义了构造函数,就需要使用它指定的所有参数调用它

Course c = new Course(
  "CMSC-101",
  "Wednesday",
  /* student count */ 20,
  /* capacity */ 25,
  /* average grade */ 4.0);
通过在main方法的上面一行中写入,您正在调用一个默认构造函数,即没有作为参数传递的参数,在这种情况下,字段是根据这些默认值初始化的

而在代码中

public Course(String CourseCode, String day, int StudentCount, int Capacity, double averageGrade){
this.CourseCode=CourseCode;

this.day = day;

this.StudentCount =StudentCount;

this.Capacity = Capacity;

this.averageGrade =averageGrade; 
}
是一个参数化contsructor,即传递一些参数值,并使用该参数设置变量的某些状态

在main中,方法会遇到编译问题,因为它在类上找不到默认构造函数

解决方案

要么通过Param-like

Course c = Course("ABC", "Monday", 23, 40, 2.30);

或者创建一个默认构造函数这两个构造函数都可以存在于类中,因为您正在创建参数化构造函数,并且它正在替换类的默认构造函数,并且在创建对象时,您没有传递任何参数

解决这个问题有两种方法

在类中创建一个非参数化构造函数以及参数化构造函数

公共课程{}

在构造函数中创建对象传递参数时。 课程c= 课程代码,星期一,10100,90.5


课程c=新课程//构造函数课程未定义您定义的构造函数以课程代码、日期、学生人数、容量和平均成绩为参数。与任何方法调用一样,您现在需要将一些值传递给构造函数,以匹配您定义的签名。Java仅在不定义任何其他构造函数的情况下为您生成默认构造函数。请看:请尽量使用正确的拼写,而不是你的。你建议我用引号来写,但我还是犯了一个错误。你犯了什么错误?
Course c = Course("ABC", "Monday", 23, 40, 2.30);