一、abstract关键字
- abstract可以用来修饰类、方法。
- 抽象类不可以用来实例化对象。但是抽象类中一定有构造器可以便于子类来实例化对象。
- 抽象方法只有方法的声明,没有方法体。包含抽象方法的类一定是抽象类,抽象类中可以没有抽象方法。抽象方法就是为了让不同的对象去实现它的。
- 继承抽象类的子类,要么重写其所有的抽象方法,要么将子类声明为抽象类。
二、abstract用法
- 在父类中一个方法无法明确其的方法体时,但是其子类又必须使用该方法时,可以将该方法定义为抽象方法,强制子类去重写该方法。
- 注意:abstract不能用来修饰属性、构造器等结构;不能用来修饰私有方法、静态方法、final方法、final修饰的类。
三、匿名类
- 抽象类 name = new 抽象类(){重写的抽象方法};
- 匿名类就是可以省去子类,不用让其继承抽象类的
四、模板方法
当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类实现、换句话说,在软件开发中,实现一个算法时,整体步骤很固定、通用,这些步骤在父类中已经写好了。但是某些部分是异变的,就可以将异变部分抽象出来,供不同的子类实现。这就是一种模板模式。