描述
抽象方法:只用关键字abstract声明方法头部,不声明方法体内容。
抽象类:用关键字abstract声明。
- 抽象类有构造方法,但是不能直接创建实例对象,必须通过子类创建。
- 子类必须重写父类中的抽象方法。
抽象类与抽象方法:
- 抽象方法所在的类必须为抽象类
- 抽象类中可以有抽象方法,也可以没有
- 抽象类中可以有非抽象方法,也可以没有
抽象类中可以有静态变量,并可以直接通过类名调用
意义
抽象方法与空方法:
在形式上,两者是一致的,都是只声明了方法头部,但是没有写方法体内容。并且可以通过子类重写方法,实现功能。
但是,编程应该遵循“专业的机制做专业的事”,比如在spring中@Component与@Service。
如果要定义一个方法,暂时什么事情也不做,需要通过它的重写方法来定义内容,那么这个方法就应该定义为抽象方法。
同时,抽象方法规定(提醒)程序员必须在子类中重写该方法,程序才能正常运行。
抽象类与非抽象类:
抽象类机制在一定程度上是为了支持抽象方法。但是抽象方法对应暂时不用实现的方法,而抽象类对应的是抽象上的概念类,不需要直接创建其实体对象。
面向对象的种种特性/机制是程序对现实的抽象
抽象类和抽象方法:
虽说非抽象类和非抽象方法通过继承也能够实现多态,但是抽象类和抽象方法进一步强化了多态机制。