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