Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 从父类重写方法_Java_Oop - Fatal编程技术网

Java 从父类重写方法

Java 从父类重写方法,java,oop,Java,Oop,正在尝试访问my Date父类中的isLeapYear方法。我已经在JulianDate子类中定义了该方法。如何正确实现正确方法的子类 朱利安达特(儿童班): 这是我在我的家长课程(日期)中提出的关于isLeapYear的内容: Date JDate = new JulianDate(); JulianDate.isLeapYear(); public boolean isLeapYear() { return isLeapYear(this.year)

正在尝试访问my Date父类中的isLeapYear方法。我已经在JulianDate子类中定义了该方法。如何正确实现正确方法的子类

朱利安达特(儿童班):

这是我在我的家长课程(日期)中提出的关于isLeapYear的内容:

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));


 }
}