abstract关键字
abstract修饰的类称为抽象类,修饰的方法,称为抽象方法
abstract可以修饰哪些
抽象类
1.抽象类不能有实例
2.抽象类可以有普通的构造器,方法,属性
3.抽象类就是用来被继承的
抽象方法
1.抽象方法不能有方法体,
2.抽象方法的必须被子类重写,若没有重写,就将子类也设定为抽象类
3.拥有抽象方法的类必为抽象类
4.抽象类中可以没有抽象方法,但无抽象方法的抽象类没有意义
abstract不能修饰哪些
1.不能修饰属性,代码块,构造器
2.abstract不能修饰私有的方法,因为子类无权访问父类的私有方法,更不能重写,而抽象类就是用来被继承的,无意义了。
3.abstract不能修饰静态方法,静态方法不能被重写,而抽象方法目的在于重写。
3.abstract不能修饰final方法,因为funal方法不能被重写
抽象类应用:模板模式
抽象类是模板模式的一种设计,抽象类作为多个子类的一个通用模板,子类在抽象类的基础上行了扩展,改造,但是子类总体上还保留了抽象类的行为。
- 解决问题:当功能一部分是确定的,一部分是不确定我们可以将不确定的部分暴露出去,让子类去实现
- 应用:junit单元测试,数据库访问的一个封装,spring中的JDBCtemplete等等
步骤
1.创建一个抽象类
abstract class Game(){
}
2.创建final模板方法
abstract class Game{
public final void startgame();
public final void endgame();
}
3.扩建模板类的实体类,重写抽象方法
class Minecraft extends Game{
@Override
void endgame() {
System.out.println("Minecraft Game Finished!");
}
@Override
void startgame() {
System.out.println("Minecraft Game Started.");
}
}