gpt4 book ai didi

java - 从父类重写方法

转载 作者:行者123 更新时间:2023-12-02 05:15:50 26 4
gpt4 key购买 nike

尝试访问我的 Date 父类中的 isLeapYear 方法。我已经在 J​​ulianDate 子类中定义了该方法。如何正确实现子类以获取正确的方法?

JulianDate(子类):

class JulianDate extends Date {

public JulianDate() {
super(1, 1, 1);
addDays(719164);
addDays((int) ((System.currentTimeMillis() + java.util.TimeZone.getDefault().getRawOffset()) / 1000 / 60 / 60 / 24));
}
public JulianDate (int y, int m, int d) {
super(y, m, d);
}
public boolean isLeapYear(int year) {
return year % 4 == 0;
}

这是我在父类(日期)中关于 isLeapYear 的想法:

Date JDate = new JulianDate();
JulianDate.isLeapYear();

public boolean isLeapYear() {
return isLeapYear(this.year);
}

为了完成这项工作,我的 parent 和 child 类(class)缺少什么?我希望子类计算闰年并覆盖父类方法。

最佳答案

子类将继承其父类的所有方法。您不需要在子类中再次定义它们。所以如果想让父类(Date)检测闰年,那么在Date类中定义方法,去掉isLeapYear方法朱利安日期。如果想让子类检查,需要重写父类的方法。

最后一段代码是自制的Date类吗?如果是的话,好像没有正确定义。它缺少一个构造函数,并且由于某种原因有一个方法调用,它不应该这样。


评论后添加

class Parent {
int number;

public Parent (int number) {
this.number = number;
}
public int getNumber () {
return number;
}
}

class Child extends Parent {
super() {
}
@override
public int getNumber () {
return this.number;
}

}


Child demo = new Child(10);
demo.getNumber(); //uses the child method getNumber.

但是我只是从父类中删除 getNUmber(或您的情况下的闰年),并且在子类中只有一个函数。通过将相同的函数放入两个类中,您正在复制代码,这不是好的做法。

关于java - 从父类重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60716401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com