要求:
做乙個日曆,功能和電腦、手機上的日曆一樣,能顯示每個月的天數,1至12月每個月的天數都能正確顯示(包括閏年2月29天,平年2月28天)。然後每個月的每一號顯示該天對應的星期數。
**:
package com.softeem.lesson06.oop;
/** * 建立乙個方法,獲取乙個指定年份,月份當月的總天數
* @author admini
* */
public
class
mycalendar
//判斷每個月的天數
public
intgetdaysofmonth
(int y,
int m)
}/**
* 計算從2023年1月份到引數的年份月份上乙個月的總天數
* @param y
* @param m
* @return
*/public
intgettotaldaysfrom1900
(int y,
int m)
//計算從1-(m-1)月的總天數
for(
int i =
1;i < m;i++
)return days;
}/**
* 列印日曆
* @param args
*/public
void
printcalendar
(int y,
int m)
//列印日期
與預設的日曆的程式基本設計一致,只是這裡通過自己設計構造器的引數來達到降低編碼的複雜度的目的。通過構造器賦值給全域性變數不用再設定多個引數和區域性變數。
**:
package com.softeem.lesson07.example;
public
class
mycalendar
/** * 判斷指定的年份是否是閏年
* * @param year
* @return
*/public
boolean
isleapyear
(int year)
/** * 根據提供的年份月份,返回當前月的總天數
* * @param y
* @param m
* @return
*/public
intgetdaysofmonth
(int y,
int m)
}/**
* 計算從2023年1月份到目標的年份月份上乙個月的總天
* * @param y
* @param m
* @return
*///不用定義該方法內的引數,方法內直接引入全域性變數」month」和「year」
public
intgettotaldaysfrom1900()
// 計算從1-(m-1)月的總天數 1 2 3 4 5 .. 10
for(
int i =
1; i < month; i++
)return days;
}/**
* 列印日曆
* * @param y
* @param m
*/public
void
printcalendar()
//列印日期
設計構造器的日曆和預設構造器的日曆實現功能一樣,**長度相近,從日曆這個例子看不出兩種方法的優劣之分。每種方法都有自己獨特的應用,我們能做的不是區分方法的好壞,從而一味推崇一種或者一類方法。而是面對不同的情況,不同的要求,用更方便的方法來實現要求的功能。沒有強調好壞,只是我們通過該方法實現的功能bug更少,更清楚理解整體結構。
我目前能力有限,對該方面的認識可能比價淺顯,只有不斷的學習,才能掌握理解更多的方法,理解透徹後才能更加靈活的運用在實踐中。
構造器概述和預設構造器
在建立某個物件的時候,如下 student s1 new student 這個 特別像在呼叫乙個方法名稱為student的無引數方法 我們將這種特殊的方法稱之為構造方法,構造器 constructor 但在student類中,又找不到該構造方法卻又不報錯 編譯器在編譯原始檔的時候,會建立乙個預設的構...
例項構造器與型別構造器
例項構造器即例項建構函式,型別構造器也就是靜態建構函式.1 在例項構造器裡面,我們可以初始化類的例項欄位和靜態欄位.class test 2 在型別構造器裡面我們只能初始化靜態字段,其目的也在於此.class test 3 例項構造器和型別構造器觸發的條件不一樣.例項構造器是在乙個類的例項構造的時候...
C 中的預設構造器和過載構造器
使用 new 關鍵字建立乙個物件時,runtime 必須使用那個類的定義來構造物件,runtime 必須從作業系統申請乙個記憶體區域,在其中填充由類定義的字段,然後呼叫乙個構造器執行必須的任何初始化工作。構造器 constructor 是一種特殊方法 method 它在建立類的乙個例項時自動執行。它...