当前位置:网站首页 > 技术博客 > 正文

抽象类 java



抽象类相当之重要,不会抽象类与接口,相当于没学过Java。

若在一个类中要定义一个没有方法体的方法,可以利用abstract关键字进行抽象方法定义,而包含抽象方法的类就可以使用abstract来定义为抽象类。

为什么会出现抽象类的概念?有什么作用?

类的核心组成包括属性和方法,但是学习完继承后,可知子类存在一种覆写父类方法的机制,这一机制与对象的多态性相关。但是这样会出现一个问题,假设现在使用的是普通类,类中有个print()方法。但类设计之初有个要求,希望继承它的方法一定要覆写print()方法,但是这个只是一个普通方法,子类是否覆写没有任何要求,这时候会出现一个漏洞,即父类无法强制要求子类必须覆写方法。所以需要抽象类和抽象方法来解决此类问题。

【举例】:定义抽象类

抽象方法 的特点:一个是使用abstract关键字定义,一个是方法后面没有{},即没有方法体。

【举例】:错误的使用抽象类

以上可知,抽象类不能直接进行实例化操作,因为一旦类的对象实例化了,意味着可以调用类中的方法,但是抽象类是没有方法体的。所以,在实际开发中,抽象类的使用原则:

抽象类与普通类相比,最大的好处就是强制定义了子类的实现要求,本质上讲,抽象类就是比普通类多了一些抽象方法的定义而已。实际开发设计中,父类的设计最重要,普通类相比于抽象类,抽象类的约束更加严格,所以实际开发中,几乎不会出现普通类定义子类的情况,大多数都是继承抽象类。

学到这里,整个设计结构中多了抽象类的定义,需要与原始的结构进行下对比:

1)抽象类不能使用final关键字定义,因为抽象类必须要有子类,而final不能有子类;

2)抽象类就是比普通类多了抽象方法,必须用abstract关键字声明,但是普通类中的所有结构抽象类都可以定义,包括:属性、普通方法、构造方法、常量等,且子类对象也符合对象实例化流程,默认先调用父类中的无参构造方法,再执行子类自己的构造。

【举例】:观察如下一个有意思的大坑思考题(了解即可)

3)抽象类中可以没有抽象方法,但是仍不能使用关键字new直接进行抽象类的实例化操作;

4)外部抽象类不允许使用static声明,但是内部抽象类中可以,这样表明的是一个外部抽象类;

【举例】:定义普通的内部抽象类

【举例】:在内部抽象类中使用static

5)抽象类中可以存在static方法,static方法不受实例化控制

【举例】:直接通过抽象类产生实例化对象

若发现系统类库中抽象类有直接用static方法取得实例化对象,可能就是用的以上方式。

以上出现的几种形式,有的是后面讲解系统类库中会出现的问题,目前了解即可。

抽象类与普通类具体有什么区别?打个比方,有三个物种:

现在要求实现一种命令模式,不管何种物种,只有传递指定的指令就可以进行操作。

【举例】:实现程序操作

1)行为的父类:

2)定义子类:

3)程序测试:

现在的程序中,某一类事物需要实现特定的功能,那么就必须按照Action定义的方法进行覆写,子类必须按照父类提供的模板进行代码设计,所以这种设计叫做模板设计。

1)抽象类的设计是在普通类之上的抽象,普通类描述的是具体事物,抽象类描述了多个类之间的共同点;

2)抽象类关键的问题是约定了子类必须覆写的抽象方法;

3)抽象类的使用原则:

  • 上一篇: 什么是代码设计
  • 下一篇: mysql动态sql语句
  • 版权声明


    相关文章:

  • 什么是代码设计2025-10-01 14:01:00
  • java抽象类的作用和意义2025-10-01 14:01:00
  • 跳表数据结构与算法2025-10-01 14:01:00
  • npm配置多个registry2025-10-01 14:01:00
  • update批量修改数据SQL2025-10-01 14:01:00
  • mysql动态sql语句2025-10-01 14:01:00
  • jvm可视化工具2025-10-01 14:01:00
  • 跨境电商shopee平台2025-10-01 14:01:00
  • 神奇九转指标公式源码2025-10-01 14:01:00
  • java实现生成二维码2025-10-01 14:01:00