当前位置: 首页 > news >正文

Java中的抽象类

1.抽象类是什么

2.抽象类和抽象方法如何定义

3.抽象类特征


1.抽象类是什么

在前面我们学习过了继承和多态,我们可以定义一个父类,还有诸多个子类,父类里面有子类的共同特性,子类可以继承父类,并且调用到父类的成员方法和成员变量,如果我们子类对父类的方法不满意时,可以在子类中重写父类的方法,这样在运行的时候,会产生动态绑定,会调用到子类重写的方法,这也就是多态。

但是,一个父类并不能很具体的表达出子类的需求,比如我要画一个图形,我们可以定义一个父类,然后有熊,鸭子,鱼三个子类,父类中可以定义一个shap方法,但是shape方法中,并不能明确知道要画什么图案,毕竟不能规定只画一种图案,这时,我们就可以不去实例化父类中shape方法,由子类自由的实例化每一个想要画什么图形的方法shap --- 此时父类就被定义为抽象类,而子类中的shape方法就为抽象方法

2.抽象类和抽象方法如何定义

抽象类和抽象方法的定义都要使用abstract关键字

抽象方法必须在抽象类中定义

下面是父类中的抽象方法shape,被abstract修饰的方法,就可以不实例化

如果一个类被abstract所修饰,那么这个类就成为抽象类,而一个普通类继承了抽象类,那么这个子类就必须要重写并实例化抽象类中的抽象方法

3.抽象类特征

1.抽象类也是属于类,它也可以定义普通成员变量和普通方法,子类也可以重写抽象类中的普通成员方法,运行是也会动态绑定,调用到子类重写抽象类中的方法,也会实现多态

2.抽象类可以没有抽象方法,但是抽象方法一定是在抽象类中创建的!!!

如果抽象方法在普通类中定义,那么就会报错

3.抽象方法不能被static final private所修饰,因为抽象类必须被继承,而抽象方法就必须被重写,如果抽象方法被static final private所修饰,那么就不能被重写,那么就这个抽象方法就没意义了

4.抽象类可以有构造方法,作用是为了通过子类调用构造方法初始化父类的成员变量

5.普通类继承了抽象类,那么普通类就必须实例化抽象类中的抽象方法

6.如果一个普通类A继承了抽象类B,但是这个普通类A又不想实例化抽象类B的抽象方法,那么可以将普通类A用abstract修饰,让A也成为抽象类,这样就可以不用实例化抽象类B中的抽象方法,但是如果又有一个普通类C继承了抽象类A,那么普通类C不仅仅要实例化抽象类B中的抽象方法,也必须要实例化抽象类A中的抽象方法。

相关文章:

  • 2.1.3_2 编码和调制(下)
  • 用 DeepSeek 创作一首属于自己的歌
  • 图的邻接表存储及求邻接点操作
  • 【QT】QT多语言切换
  • 极客时间:在 Google Colab 上尝试 Prefix Tuning
  • 01.SQL语言概述
  • 算法-构造题
  • CSS悬停闪现与a标签嵌套的问题
  • vue3:十六、个人中心-修改密码
  • 《前端面试题:JavaScript 作用域深度解析》
  • leetcode Top100 189.轮转数组
  • Python Cookbook-7.13 生成一个字典将字段名映射为列号
  • 【学习笔记】TLS
  • 【threejs】每天一个小案例讲解:题外话篇
  • JDK 17 新特性
  • Java常见异常处理指南:IndexOutOfBoundsException与ClassCastException深度解析
  • Linux系统防火墙之iptables
  • LeetCode --- 452周赛
  • 基于FPGA的超声波显示水位距离,通过蓝牙传输水位数据到手机,同时支持RAM存储水位数据,读取数据。
  • Java八股文——并发编程「场景篇」
  • 网站首页图片大小/网站创建的流程是什么
  • 开宾馆做独家网站好吗/推广渠道平台
  • 做网站需要购买地域名吗/站长工具推荐网站
  • 自己做一个网站一年的费用/推广方案如何写
  • 网站营销的优势/凡科建站官网
  • wordpress安装点提交无法访问/seo排名优化首页