抽象类
abstract:abstract修饰符可以用来修饰方法也可以用来修饰类,如果用来修饰方法,那么该方法就是抽象方法。如果用来修饰类,那么该类就是抽象类;
-
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类;
-
抽象类不能使用new关键字来创建对象,他是用来让子类继承的;
-
抽象方法只有方法的声明,没有方法的实现,他是用来让子类实现的;
-
子类继承抽象类,那么就必须要实现抽象类,没有实现的抽象方法,否则该子类也要声明为抽象类;
内部类
内部类:就是在一个类的内部定义一个类,比如,A中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类;
- 成员内部类;
- 静态内部类;
- 局部内部类;
- 匿名内部类;
//练习:字符串”2020-09-08“转换为java.sql.Date
public coid testExcer() throws ParseException{
String birth = "2020-09-08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parase(birth);
System.out.println(date);//输出:Tue Sep 08 00:00:00 GMT+08:00 2020
java.sql.Date birthDate = new java,sql.Date(date.getTime);
System.out.println(birthDate);//输出:2020-09-08
}
//now():获取当前的日期LocalDate、时间LocalTime、时间+日期LOcalDateTime
public void test(){
LocalDate localDate = new LocalDate.now();
LocalTime localTime = new LocalTime.now();
LocalDateTime localDateTime = new LocalDateTime.now();
System.out.println(localDate);
System.out.printlc(localTime);
System.out.println(localDateTime);
//of():设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime = LocalDateTime.of(2020,10,8,17,43,20);
System.out.println(localDateTime);
//getXxx():获取当月的信息;
System.out.println(locDateTime.getDayOfMonth());//获取今天是这个月的第几天
System.out.println(locDateTime.getDayOfWeek());//获取周几
System.out.println(locDateTime.getMonth());//获取英文月份
System.out.println(locDateTime.getMonthValue());//获取数字月份
System.out.println(locDateTime.getMinute());//获取分钟
}
Comparable接口的使用举例:自然排序
- 像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式;
- 像String、包装类重写compareTo()方法以后,进行了从小到大的排列;
- 重写compareTo(obj)的规则:
如果当前对象this大于形参对象obj,则返回正整数;
如果当前对象this小于形参对象obj,则返回负整数;
如果当前对象this等于形参对象obj,则返回零;
Comparator接口的使用:定制排序
- 背景:当元素的类型没有实现java.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用Comparator的对象来排序;
- 重写compare(Object o1,Object o2)方法,比较o1和o2的大小;
如果方法返回正整数,则表示o1大于o2;
如果返回0,表示相等;
如果返回负数,表示o1小于o2;