浅谈Java的抽象类及其意义

什么是抽象类

  • 抽象类只是在普通类的基础上扩充了⼀些抽象⽅法⽽已,所谓的抽象⽅法指的是只声明⽽未实现的⽅法(即没有⽅法体)。所有抽象⽅法要求使⽤abstract关键字来定义,并且抽象⽅法所在的类也⼀定要使⽤abstract关键字来定义,表示抽象类。
  • 定义一个抽象类:
    浅谈Java的抽象类及其意义
  • 抽象类中包含有抽象⽅法,也可以有普通方法,⽽抽象⽅法不包含⽅法体,即没有具体实现。因此抽象类不能直接产⽣实例化对象。

对于抽象类的使⽤原则

  • 所有的抽象类必须有⼦类
  • 抽象类的⼦类必须覆写抽象类的所有抽象⽅法(⼦类不是抽象类),⽅法覆写⼀定要考虑权限问
    题,权限尽量都⽤public
  • 抽象类的对象可以通过对象多态性利⽤⼦类为其实例化
  • private与abstract不能同时使⽤。

抽象类的相关规定

  • 抽象类只是⽐普通类多了⼀些抽象⽅法⽽已。
    (1)因此在抽象类中也允许提供构造⽅法,并且⼦类也照样遵循对象实例化流程。实例化⼦类时⼀定先调⽤⽗类构造⽅法。
    (2)如果⽗类没有⽆参构造,那么⼦类构造必须使⽤super明确指出使⽤⽗类哪个构造⽅法。
  • 抽象类中允许不定义任何的抽象⽅法,但是此时抽象类依然⽆法直接创建实例化对象。
  • 抽象类⼀定不能使⽤final声明,因为使⽤final声明的类不允许有⼦类;⽽抽象类必须有⼦类;相应的,抽象⽅法也不能使⽤private定义,因为抽象⽅法必须要能被覆写。
  • 抽象类也分为内部抽象类和外部抽象类。内部抽象类中也可以使⽤static定义来描述外部抽象类。

抽象类的意义

1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。

2.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。

所以,Java中抽象类对于代码的维护和重用有很好的帮助,也是Java面向对象的一个重要体现。