我从以下代码中得到了这个构造函数未定义的错误:
def last_day_month(year, month):
leap_year_flag = 0
end_dates = {
1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31
}
# Checking for regular leap year
if year % 4 == 0:
leap_year_flag = 1
else:
leap_year_flag = 0
# Checking for century leap year
if year % 100 == 0:
if year % 400 == 0:
leap_year_flag = 1
else:
leap_year_flag = 0
else:
pass
# return end date of the year-month
if leap_year_flag == 1 and month == 2:
return 29
elif leap_year_flag == 1 and month != 2:
return end_dates[month]
else:
return end_dates[month]
谁能解释我为什么会出现这样的错误?我相信我已经在学生类
中完成了构造定义package arrayClassObject;
public class Constructor {
public class Student{
String name;
public Student() {
}
public Student(String name) {
this.name = name;
}
void setName(String name) { // setter
this.name = name;
}
public String getName() { // getter
return name;
}
}
public static void main(String[] args) {
Student s = new Student();
s.setName("Jack");
System.out.println(s.getName());
}
}
答案 0 :(得分:3)
当您有一个非静态内部类时,仅当存在该封闭类的实例时才可以创建一个实例。因此,在不更改上面的class structures
的情况下,您需要执行以下操作:
Constructor c = new Constructor(); // instance of the enclosing class
Student s = c.new Student(); // special syntax
s.setName("Jack");
System.out.println(s.getName());
答案 1 :(得分:0)
您将Student
定义为封闭类Constructor
的嵌套内部类。
由于Student
是非静态的,因此它只能与Constructor
的关联实例一起存在。
有关嵌套类的更多信息,请参见Nested Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects)。
有多种方法可以解决此问题。
将Student
设为静态。这样,您就不需要Constructor
的实例来创建Student
。
保持Student
一个非静态内部类。然后,您首先需要构造一个Constructor
的实例,以便与Student
关联。 (new Constructor().new Student()
)
将Student
移动到其自己的文件。可能不需要Student
作为内部类。因此,只需将其设为常规课程即可。