一. 抽象类
1.1 抽象的由来
抽象方法:
当多个类中具有共性方法时,我们就会向上抽取形成父类,并在这个父类中定义这些共性方法。
而有时,父类中的方法并不能明确每个子类的具体实现,那么这种方法就称为抽象方法。
抽象方法的定义:用abstract关键字修饰,且没有方法体,直接以分号结尾的方法
格式:
public abstract 方法名(参数列表);
抽象类:
具有抽象方法的类就是抽象类
格式:
public abstrat class 类名{
}
1.2 抽象类,抽象方法的特点
1、抽象类必须被abstract修饰
2、抽象类不能创建对象(不能实例化,不能new)
3、抽象方法必须被abstract修饰,且没有方法体,直接以分号结尾的方法
4、抽象方法必须在抽象类中
5、抽象类中可以没有抽象类方法
1.3 抽象类的使用
步骤:
1、定义抽象类的子类
2、重写抽象类的所有抽象方法
3、创建子类对象,调用重写后的方法
1.4 细节
1、
问:反正子类都要重新定义自己的功能,为什么还要继承具有抽象方法的抽象类?
答:因为继承了抽象类后就必须重写所有抽象方法,这表示当前的子类是属性父类继承体系中的一份子的,作为该类的子类就必须具备此功能。
2、
问:抽象类中不定义抽象方法的意义是什么?
答:一个类使用abstract修饰后,它就不能被实例化了,就必须通过子类的继承和重写才有意义,
这是适配器设计模式的体现。
3、
问:抽象类一定是父类吗?
答:从代码角度来说不一定;从实际意义和思考角度来说,抽象类一定是一个父类
1.5 实际开发中,抽象类的使用
使用匿名内部类的方法,创建抽象类的子类对象,重写方法后,就可以直接调用方法
通过子类对功能进行扩展
格式:
new 抽象类名 / 接口名(){
// 重写所有抽象方法
};
二. 匿名对象的创建
概念:创建对象时,不指定变量名
好处:简化代码的书写
弊端:匿名对象只能使用一次
格式:
new 数据类型(参数);