★★★多态
含义(什么是多态)
同一个对象,在不同时刻体现出来的不同形态(猫既可以是猫类,也是动物类)
多态的前提和体现
编译 | 运行 | ||
---|---|---|---|
成员变量 | 看左边(父类) | 看左边(父类) | |
成员方法 | 看左边(父类) | 看右边(子类) | |
构造方法 | 和继承一样,每个构造方法中都存在一个super(),访问父类的空参构造 |
1.方法的参数如果是一个类,那么调用此方法需要传入此类的对象或者此类的子类对象
2.方法的返回值类型是一个类,那么需要返回此类的对象或者此类的子类对象
3.方法的参数如果是一个接口,那么调用此方法只能传入接口的实现类对象
4.方法的返回值是一个接口,那么需要返回此接口的实现类对象
★★多态的优缺点
- 优点:提高代码的扩展性,灵活性
- 缺点:不能访问子类的特有功能—>需要转型(instanceof)
- 多态的转型:
- 向上转型:把子类类型数据转换为父类类型数据 Animal a = new Dog();
- 向下转型:把父类类型的数据转成子类类型数据 Cat cat = (Cat)a;
转型注意:如果被转的对象,对应的实际类型和目标类型不是同一种数据类型,那么转换时会出现ClassCastException异常
解决转型安全隐患
使用关键字:instanceof
- 作用:判断一个对象是否属于一种引用数据类型
格式:对象名instanceof引用数据类型
成员内部类
-
成员内部类
位置和格式
- 定义的位置:类中方法外
- 创建成员内部类对象的格式:外部类名.内部类名 对象名 = new 外部类名().new 内部类名(参数);
访问外部类的成员
匿名内部类:没有名字的类,一次性的产品
- 使用场景:直接调用方法,作为方法的传参,返回值类型
- 好处:简化代码,快速实现接口或者抽象的抽象方法
- 格式:
- new 类名/接口名(){重写抽象方法} 注意:此处创建的是子类对象!!!
- 使用方式:
- 直接调用
- 作为方法的参数传递
- 作为方法的返回值类型
常用API:Java提供好的类与接口(简单理解)
Object类
- 概述:类Object是层次结构的根,每个都把Object作为超类。所有对象(包括数组)都实现了这个类的方法
- 方法:public String toString()
- 如果一个类没有重写toString方法,那么打印此类的对象,打印的是此对象的地址值
- 如果一个类重写了toString方法,那么打印此类的对象,打印的是此对象的属性值
- 好处:把对象转成字符串,快速查看一个对象的属性值
- 执行时机:打印对象时会默认调用toString方法
方法public boolean equals()
Objects时JDK1.7新增的一个对象工具类,里面多是静态方法可以用来操作对象。比如对象的比较,计算对象的hash值,判断对手是否为空,比如里面的equals方法,可以避免空指针异常
日期相关的类 :Date类
简介:
- 概述:java.util.Date表示特定的瞬间,精确到毫秒
- 构造方法:
- public Date():创建的对象,表示的是当前计算机系统的时间
- public Date(long time):Date对象 = 1970/1/1/0:0:0+time毫秒值
成员方法:
概述:主要用于操作日期格式的一个类
- 作用:
- 格式化:Date —>String 格式化是指转化成String类型数据
- 解析: String—>Date 解析是指转化成Date类型数据’
- 构造方法:
- SimpleDateFormat(String pattern)给定日期模板创建日期格式化对象
成员方法:
java.util.Calendar类表示日历,内含有各种时间信息,以及获取,计算时间的方法
- Calendar本身是一个抽象类,可以通过Calendar提供的静态方法 getInstance日历子类对象
Calendar常用方法:
| 方法名 | 说明 | | —- | —- | | public static Calendar getInstance() | 获取一个它的子类GregorianCalendar对象 | | public int get(int field) | 获取指定日历字段的时间值 | | public void set(int field,int value) | 设置指定字段的时间值 | | | |