Java 从父类重写方法
正在尝试访问my Date父类中的isLeapYear方法。我已经在JulianDate子类中定义了该方法。如何正确实现正确方法的子类 朱利安达特(儿童班): 这是我在我的家长课程(日期)中提出的关于isLeapYear的内容:Java 从父类重写方法,java,oop,Java,Oop,正在尝试访问my Date父类中的isLeapYear方法。我已经在JulianDate子类中定义了该方法。如何正确实现正确方法的子类 朱利安达特(儿童班): 这是我在我的家长课程(日期)中提出的关于isLeapYear的内容: Date JDate = new JulianDate(); JulianDate.isLeapYear(); public boolean isLeapYear() { return isLeapYear(this.year)
Date JDate = new JulianDate();
JulianDate.isLeapYear();
public boolean isLeapYear() {
return isLeapYear(this.year);
}
在我的父母和孩子的课堂上,我缺少什么来让这一切顺利进行?我希望子类计算闰年并覆盖父类方法。子类将继承其父类的所有方法。您不需要在子类中再次定义它们。因此,如果希望父类(
Date
)检查闰年,则在Date
类中定义方法,并从JulianDate
中删除isLeapYear
方法。如果希望子类检查它,则需要重写父类的方法
是自制的日期
类中的最后一段代码吗?如果是,则似乎定义不正确。它缺少一个构造函数,并且由于某种原因有一个方法调用,而它不应该这样做
评论后添加 但是,我只需要从父类中删除getNUmber(在您的例子中是leapyear),并且在子类中只有一个函数。将相同的函数放入两个类中,就是在复制代码,这不是一个好的做法
class JulianDate extends Date {
public JulianDate() {}
public boolean isLeapYear(int year) {
return year % 4 == 0;
}
}
你可以像这样使用它
Date date = new JulianDate();
boolean isLeapYear = date.isLeapYear(2020);
类JulianDate扩展日期{
public JulianDate(){
super(1, 1, 1);
}
public JulianDate(int y, int m, int d) {
super(y,m,d);
}
public boolean isLeapYear() {
boolean leap = false;
if(getYear() % 4 == 0)
{
if( getYear() % 100 == 0)
{
// getYear() is divisible by 400, hence the getYear() is a leap getYear()
if ( getYear() % 400 == 0)
leap = true;
else
leap = false;
}
else
leap = true;
}
else
leap = false;
return leap;
}
public boolean isLeapYear(int y) {
this.setYear(y);
return this.isLeapYear();
}
public static void main(String [] ar){
JulianDate julianDate= new JulianDate(1988, 02, 21);
System.out.println(julianDate.isLeapYear());
JulianDate julianDate2= new JulianDate();
System.out.println(julianDate2.isLeapYear(1988));
}
}
希望这能对您有所帮助。您需要什么还不清楚。最好共享父类、子类的代码,并解释错误所在。我希望子类能够计算闰年。我是Java初学者,所以我在这方面做了很多努力。那么您需要在方法上添加@override标记,我不能使用本地日期。@User7080 LocalDate选项供参考。顺便说一句,修改了答案。我看到了,谢谢。但是“public boolean isLeapYear(){return isLeapYear(this.year);”会发生什么情况?它给我一个错误,并说应该是0个参数,但一旦看到,我就删除了“this.year”程序不再工作。不需要参数化julianDate.isLeapYear()方法。您正在通过构造函数传递年份,因此不需要再次传递。在这段代码之后出现“public int getNumberOfDaysInMonth(int year,int month){if(isLeapYear(year)&&month==2){…”但它告诉我无法解析“date”中的“isLeapYear”方法,问题是如果我将整段代码移动到子类,那么它会弄乱大部分父类。
Date date = new JulianDate();
boolean isLeapYear = date.isLeapYear(2020);
public JulianDate(){
super(1, 1, 1);
}
public JulianDate(int y, int m, int d) {
super(y,m,d);
}
public boolean isLeapYear() {
boolean leap = false;
if(getYear() % 4 == 0)
{
if( getYear() % 100 == 0)
{
// getYear() is divisible by 400, hence the getYear() is a leap getYear()
if ( getYear() % 400 == 0)
leap = true;
else
leap = false;
}
else
leap = true;
}
else
leap = false;
return leap;
}
public boolean isLeapYear(int y) {
this.setYear(y);
return this.isLeapYear();
}
public static void main(String [] ar){
JulianDate julianDate= new JulianDate(1988, 02, 21);
System.out.println(julianDate.isLeapYear());
JulianDate julianDate2= new JulianDate();
System.out.println(julianDate2.isLeapYear(1988));
}
}