[英]Overriding method from parent class
嘗試訪問我的 Date 父類中的 isLeapYear 方法。 我已經在 JulianDate 子類中定義了該方法。 如何正確實現子類以使用正確的方法?
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;
}
這是我在父類(Date)中提出的關於 isLeapYear 的內容:
Date JDate = new JulianDate();
JulianDate.isLeapYear();
public boolean isLeapYear() {
return isLeapYear(this.year);
}
我在父子類中缺少什么來完成這項工作? 我希望子類計算閏年並覆蓋父方法。
子類將繼承其父類的所有方法。 您不需要在子類中再次定義它們。 因此,如果您希望父類( Date
)檢查閏年,則在Date
類中定義該方法,並從JulianDate
刪除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(或在您的情況下為閏年),並且在子類中只有一個函數。 通過將相同的函數放入兩個類中,您正在復制代碼,這不是好的做法。
class 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));
}
}
希望這會幫助你。
class JulianDate extends Date {
public JulianDate() {}
public boolean isLeapYear(int year) {
return year % 4 == 0;
}
}
你可以像這樣使用它
Date date = new JulianDate();
boolean isLeapYear = date.isLeapYear(2020);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.