文章目录
多态
定义
同一个对象,在不同时刻表现出来的不同状态
解决的问题
- 提高代码的复用性
- 提高代码的扩张性
使用格式
父类型 对象 = new 子类();
在使用时的注意细节
- 多态中:父类和子类拥有一模一样的成员变量时:
- 编译时:以父类型中的成员变量为主
- 运行时:使用父类中的成员变量
- 多态中:父类和子类用于一模一样的成员方法时:
- 编译时:以父类中的成员方法为主
- 运行时:调用子类中重写后的成员方法
- 弊端:父类不能调用子类特有的方法
多态转型
- 向上转型(自动类型转换)
- Animal an = new Dog();
- 向下转型(强制类型转换)
- Dog d = (Dog) an;
- 解决父类不能调用子类特有的方法
- 注意细节:
- 容易发生ClassCastException(类型转换异常)
- 解决办法:
- instanceof
if(父引用对象 instanceof 子类型){
子类型 对象 = (子类型) 父引用对象;
对象.特有成员;
}
多态代码的书写
- 创建对象
Father f = new Son();
- 作为参数
public static void method(Player p){
p.start();
}
- 作为返回值
public Animal getInstance(){
return new Dog();
}
内部类
概念
一个类A内部定义了一个类B,那么B就是A的内部类,A可以称为外部类
成员内部类
定义
类中方法外定义的类,称之为成员内部类
public class Outer{
class Inner{
}
}
对象实例化
内部类的类型表示:外部类名.内部类名
成员内部类创建对象,需要借助外部类的对象:
外部类名.内部类名 变量名 = 外部类对象.new 内部类构造方法(参数);
匿名内部类
解决问题
简化程序中代码的书写
格式
new 类名/接口(){
//重写方法
}
前提条件
有一个父类或者父接口
特点
- 本质就是某一个类或者接口的子类
- 还是一个对象
使用方式
- 直接调用方法使用
new Father(){
@Override
public void swim(){
sout("在游泳");
}
}.swim();
- 当作方法的参数传递
//方法参数类型是接口
public static void showFlyable(Flyable f){
f.fly();
}
//调用方法
showFlyable(
new Flyable(){
@Override
public void fly(){
sout("在飞");
}
}
);
- 当作方法的返回值
public static Flyable getFlyable(){
return new Flyable(){
@Overside
public void fly(){
sout("在飞");
}
};
}
API
Object类
在Java继承体系中,有一个顶层父类:Object(鼻祖类)
- 在Java语言中,程序员自定义的类或者jdk中存在的类,直接或间接都有继承Object
- 继承了Object类后,就可以使用Object提供的相关方法
- String toString()
- 作用:把对象转换为字符串
- 快捷键:alt+insert toString
- boolean equals(Object obj)
- 作用:比较俩个对象是否相同,(默认比较俩个对象的地址值);和String类中的equals方法相比,可以避免空指针异常
- 快捷键:alt+insert
- String toString()
Date类
归属包
java.util
作用
表示日期(精确到毫秒)
使用
- 构造方法:
- public Date() 表示当前计算机的时间
- public Date(Long tine) 从1970年1月1日0时0分0秒后开始计算的时间
- 常用方法:
- public Long getTime() 获取毫秒值
- public void setTime(Long time) 从1970年1月1日0时0分0秒后开始计算的时间
DateFormat类
定义
是Java语言提供的日期格式化类
作用
对日期进行格式化操作
归属包
java.text
使用
DateFormat是一个抽象类,无法实例化,使用子类:SimpleDateFormat
DateFormat df = new SimpleDateFormat(“日期模板”);
- 构造方法
- SimpleDateFormat(String pattern) 指定日期模板创建日期格式化对象
- 常用方法
- public String format(Date d) 格式化,将日期对象格式化为字符串
- public Date parse(String s) 解析,将字符串解析为日期对象
Calendar类
介绍
日历类,内含有各种时间信息,以及获取,计算时间的方法
归属包
java.util
使用
Calendar本身就是一个抽象类,可以通过Calendar提供的静态方法getInstance获取日历子类对象
- 常见方法
- public static Calendar getInstance() 获取子类对象
- public int get(int field) 获取指定日历字段的时间值
- public void set(int field,int value) 设置指定字段的时间值
- public void add(int field,int amount) 为某个字段增加或减少指定的值
- get,add,set方法参数中field数据值使用Calendar中定义的整数常量来表示,如Calendar.YEAR