使用abstract(抽象)修饰符,可以修饰类和方法。

1、abstract修饰类,会使这个类成为一个抽zhi象类,这个类将不能dao生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。

2、abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。

注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

abstract修饰符在修饰类时必须放在类名前。

abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。

注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。

举个简单的例子下面有一个抽象类:

abstract class E{public  abstract  void  show();//public abstract 可以省略}然后其它类如果继承它通常为了实现它里面的方法:class F extends E{void show(){//写具体实现的代码 }}最后再主方法里面定义一个父类引用指向子类对象,就会发生多态现象,比如 :E e=new F();e.show();实际调用了子类里面的show()方法 。

扩展资料:

Java中的abstract方法和abstract类的问题:

当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义。

抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法。

抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。

1:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。

2:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。

abstract 的规则:

1:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。

2:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法。

3:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例。

4:不能用final 修饰符修饰。

java开发中的abstract的用法相关推荐

  1. 【干货】Redis在Java开发中的基本使用和巧妙用法

    Redis是一款高性能的内存数据结构存储系统,能够支持多种数据结构类型,如字符串.哈希.列表.集合.有序集合等,也能够支持高级功能,如事务.发布/订阅.Lua脚本等,具有高可用性.高并发性和可扩展性的 ...

  2. Java开发中的常见危险信号

    在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码问题. 我不是在谈论总是错误的 ...

  3. Java开发中常见的危险信号

    Dustin Marx是一位专业软件开发者,从业已经有17年的时间,他拥有电子工程学士学位,还是一位MBA.Dustin维护着一个博客,专门介绍软件开发的各个主题.近日,他撰文谈到了Java开发中常见 ...

  4. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  5. Java开发中RestFul服务接口规范

    REST介绍 representational State Transfer (REST) 是一种架构原则,其中将 web 服务视为资源,可以由其 URL 唯一标识.RESTful Web 服务的关键 ...

  6. git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法

    前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Book​git-scm.com 安 ...

  7. java开发中遇到的问题及解决方法(持续更新)

    java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...

  8. Java开发中Websocket的技术选型参考

    1. 前言 Websocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据 ...

  9. Java开发中文件读取方式总结

    JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径.路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:abc1.txt. 什么是相对路径呢?相对路径就是 ...

最新文章

  1. delphi开发的小技巧----------------http://www.cto360.com/a/5000086716.shtml
  2. 如何实施好基于MOSS的企业搜索项目(上)
  3. Android --- PagerAdapter的使用方法详细讲解
  4. android ButterKnife的简单使用
  5. 飞天茅台也可以在天猫上购买了,售价1499元!
  6. java 正则 pattern 线程安全_(一)Java Pattern类----java正则
  7. Android唤醒屏幕
  8. Spring Boot 集成 MyBatis (注解版 与 xml 配置版)
  9. 风雨三十载,华为的沉浮往事
  10. 离散数学及其应用第六版中文电子书和答案
  11. Vijos P1199核弹危机
  12. 数学建模——灵敏度分析
  13. google退出中国市场——g迷怎么办
  14. LOL聊天服务器一直是断开状态怎么办,lol聊天服务器为什么老连不上 lol聊天服务器连不上解决技巧...
  15. 开源ERP安装之Opentaps和Openbravo安装指南
  16. failover机制
  17. 双均线策略 ------优矿学习
  18. 高德地图安卓 拖拽选点_高德地图想再造一个大众点评?
  19. 特斯拉 开源_开源与癌症作斗争,特斯拉采用Coreboot,Uber和Lyft发行开源机器学习...
  20. Vue3中Vuex的使用

热门文章

  1. 四种宽带接入技术功能及说明
  2. 【Android 你的SurfaceView休眠了吗】
  3. Eclipse安装JBoss Tools(Drools)
  4. 【复试笔记】市政工程-流体力学
  5. 防火墙阻止tftp_Juniper netscreen防火墙TFTP升级过程
  6. 2023年电工杯B题详解
  7. JNI系列(一)JNI简介
  8. 失物招领网站毕业设计,失物招领网站设计与实现,失物招领论文源码设计分析毕设作品参考
  9. IDEA+MySQL+JavaFX之通讯录系统
  10. ISO14443 Type A类型卡的防碰撞过程以及命令解析