1、基本概念
java.util.Calender類主要用於描述特定的瞬間,取代Date類中的過時方法實現全球化。
該類是個抽象類,因此不能實例化對象,其具體子類針對不同國家的日歷系統,其中應用最廣泛的
是GregorianCalendar(格里高利歷),對應世界上絕大多數國家/地區使用的標准日歷系統。
2、常用的方法
過時Date構造函數與替代方法Calender gerInstance()之間的對比
package com.lagou.task13; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalenderTest{ public static void main(String[] args) { // 1.使用過時的方法按照指定的年月日時分秒來構造對象 Date d1 = new Date(2008-1900, 8-1, 8, 20, 8, 8); // 設置日期對象的格式並打印 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = sdf.format(d1); // 該方法已過時,在年份中需要扣除1900,月份中需要減1 System.out.println("獲取到的時間是:" + format); // 3908-9-8 20-8-8 System.out.println("-----------------------------------------------"); // 2.取代的方式,按照指定的年月日時分秒來構造對象 // 獲取Calender類型的引用 Calendar instance = Calendar.getInstance(); // 設置指定的年月日時分秒信息 instance.set(2008,8-1,8,20,8,8); // 使用calender類中set方法,年份不需要減去1900月份需要減去1 // 轉換為Date類型的對象 Date d2 = instance.getTime(); String format1 = sdf.format(d2); System.out.println("獲取到的時間是:" + format1); } }
多態的第三種使用場合 :利用參數的返回值類型形成多態
System.out.println("-----------------------------------------------"); // 3.向指定的字段設置以及增加指定的數值 instance.set(Calendar.YEAR,2018); // 轉換為Date類型並按照指定的格式打印 Date d3 = instance.getTime(); System.out.println("設置年份后的結果是:" + sdf.format(d3)); // 增加兩個月 instance.add(Calendar.MONTH,2); Date d4 = instance.getTime(); System.out.println("增加月份后的結果是:" + sdf.format(d4)); // 筆試考點:既然Calender是個抽象類不能創建對象,那么上面的方法為啥可以獲取Calender類型的引用呢?為什么getInstance()方法可以得到他的引用 // 在源碼中Calender new的不是自己的對象,所以這些類與Calender是父子類的關系;雖然在源碼中return的是cal,但是實際上返回的是子類類型的對象形成多態 // 多態的使用場合之三 · }
3、多態的使用場合
通過方法的參數傳遞形成多態;
public static void draw(Shape s){
s.show();
}
draw(new Rect(1, 2, 3, 4));
在方法體中直接使用多態的語法格式
Account acc = new FixedAccount();
通過方法的返回值類型形成多態
Calender getInstance(){
return new GregorianCalendar(zone, aLocale);
}