Java抽象类——抽象类与普通类的区别

abstract抽象类

1、含义:类和类之间具有共同特征,将这些共同特征提取出来,就形成抽象类。。。

java 中,被 abstract 关键字修饰的类叫做抽象类,被abstract关键字修饰的方法叫做抽象方法。

抽象类本身是不存在的,所以抽象类无法创建对象,无法实例化!! 抽象方法是没有具体实现(没有方法体)的。
所以抽象类是用来被子类继承的。。

2、抽象类使用abstract来定义。。

3、抽象类也属于引用数据类型,而不是基本数据类型。。

4、finalabstract 是不能联合使用的。。【abstract class 抽象类, 不能用 final 声明】

5、抽象类的子类还可以是抽象类,也可以是非抽象类。。

6、抽象类虽然无法实例化,但是抽象类有构造方法,该方法是供子类使用的。。

7、抽象类可以没有抽象方法,但是抽象方法必须出现在抽象类中;

​ 抽象方法表示没有实现的方法,没有方法体的方法,是以分号结尾。。 例如:

abstract public void d();

*8、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。。

这是Java强行规定的,否则编译器会报错。。。但是如果子类是抽象类,那么就可以不用重写父类的抽象方法
public class test{public static void main(String args[])  {//这里使用到了多态,创建对象。Anmial a = new Cat();//面向抽象编程a.move();       //猫在叫}
}
abstract class Anmial{abstract public void move();//抽象方法
}
//Cat不是抽象的, 并且未覆盖Anmial中的抽象方法move()
/*class Cat extends Anmial{
}*/
//必须将父类继承过来的抽象方法重写
class Cat extends Anmial{public void move(){System.out.println("猫在叫");}
}
//如果子类是抽象类,那么就可以不用重写父类的抽象方法
abstract class Bird extends Anmial{
}

面试题(判断):Java语言中凡是没有方法体的方法都是抽象方法。 (×)

总结

抽象方法和普通方法的区别:

抽象方法是由继承了抽象类的子类重写后调用子类重写的方法来执行

区别:

  • 抽象方法有 abstract 修饰,
  • 抽象方法没有方法体,
  • 抽象方法无法执行,
  • 抽象方法不能用 private 修饰,

抽象类和普通类的区别

抽象类中可以有普通方法。

如果一个类继承了抽象类,那么这个类必须重写它的抽象方法,或者将类声明为抽象类

抽象类是有构造方法的,但是不能被实例化

构造方法、类方法( static )不能声明为抽象( abstract )方法

区别:

  • 抽象类有 abstract 修饰,
  • 抽象类中可以有抽象方法,
  • 抽象类不能被实例化,需要抽象类变量引用其子类的对象

抽象类除了不能被实例化以外,和普通类没有区别。定义抽象类是为了强迫子类实现抽象方法,是定义规范的

一个类中只要含有抽象方法,这个类就必须是抽象类;抽象类不一定含有抽象方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化面试-概率题

文章目录 一、题目1.糖果罐(绿皮书79页)2 折木棍(绿皮书89页)3 第一张ACE(绿皮书95页)4 n个均匀分布之和(绿皮书95页) 二、答案1. 糖果罐2 折木棍3 第一张ACE4 n个均匀分布之和 一、…

spring事件和线程池区别

Spring事件(Spring Event)和线程池(Thread Pool)是两个不同的概念。 Spring事件是Spring框架中的一种机制,用于在应用程序中实现发布-订阅模式。通过定义事件和监听器,可以在特定事件发生时,通…

pytest笔记: pytest单元测试框架

第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…

专题:曲面的切平面、法线

假设曲面方程为隐函数 F ( x , y , z ) 0 ,点 M ( x 0 , y 0 , z 0 ) 是其上一点 又在点 M 处任意引一条在曲面上的曲线,设该曲线参数方程为: { x φ ( t ) y ψ ( t ) z ω ( t ) ,且当 t t 0 时, x x 0 , y y…

Flink流批一体计算(18):PyFlink DataStream API之计算和Sink

目录 1. 在上节数据流上执行转换操作,或者使用 sink 将数据写入外部系统。 2. File Sink File Sink Format Types Row-encoded Formats Bulk-encoded Formats 桶分配 滚动策略 3. 如何输出结果 Print 集合数据到客户端,execute_and_collect…

鼎盛合方案——充气泵的原理和结构

充气泵是一种常见的气体压缩设备,它可以将空气或其他气体压缩成高压气体,用于充气、输送、压缩等工业和生活领域。充气泵的原理是利用机械或电动力量将气体压缩,使其体积减小,压力增大,从而达到充气的目的。 充气泵的…

力扣:74. 搜索二维矩阵(Python3)

题目: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返…

解决Linux报错:Swap file “xxxxxx.swp“ already exists

出现问题 Swap file “.models_conf.yaml.swp” already exists! 在 Linux 下 vim 编辑过程中,由于某种原因异常退出正在编辑的文件,再次编辑该文件时,会出现如下提示: 一个文件出现了带有.swp的副本文件的时候,会出现…

MySQL概述,架构原理

一.MySQL简介 MySQL是一个关系型数据库管理系统,由瑞典的MySQL AB公司开发,后被oracle公司收购,MySQL是当下最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Man…

Mybatis小记

目录 Mybatis第一个程序 xml文件 测试类 错误排查 Mybatis第一个程序 1.搭建实验数据库 2.导入MyBatis相关jar包 3.编写MyBatis核心配置文件 4.编写MyBatis工具类 5.创建实体类、 6.编写Mapper接口类 7.编写Mapper.xml配置文件 8.编写测试类 对象传参只引用需要的属性就可…

【设计模式】Head First 设计模式——装饰者模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 动态地将责任附加到对象上,若要扩…

新生代与老年代

在Java虚拟机(JVM)中,内存被划分为多个不同的区域,其中包括新生代(Young Generation)和老年代(Old Generation)。 新生代是用于存储新创建的对象的区域。大多数对象在创建后很快就变…

springboot RabbitMQ客户端连接故障恢复

最近做RabbitMQ故障演练发现RabbitMQ服务器停止后,基于springboot的消费端不可以自动的恢复,队列的消费者消失,消息一直积压到队列中,这种情况肯定是不可接收的;通过研究源代码找到了解决方案。 一、添加自动恢复配置a…

基于AVR128单片机抢答器proteus仿真设计

一、系统方案 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void timer0_init() //定时器初始化 { TCCR00x07; //普通模式,OC0不输出,1024分频 TCNT0f_count; //初值,定时为10ms TIFR0x01; //清中断标志…

Oracle-day3:子查询、with as语句、聚合函数

一、单行子查询 /*一、单行子查询格式&#xff1a;select <列明表> from 表名(查询select 语句)where 列或表达式 比较运算符(SELECT 列名 FROM 表名 WHERE 条件)-- 子查询&#xff0c;必须要使用小括号括起来---最大值函数&#xff1a;max()最小值函数: min()二、 from…

ChatGPT Prompting开发实战(二)

一、基于LangChain源码react来解析prompt engineering 在LangChain源码中一个特别重要的部分就是react&#xff0c;它的基本概念是&#xff0c;LLM在推理时会产生很多中间步骤而不是直接产生结果&#xff0c;这些中间步骤可以被用来与外界进行交互&#xff0c;然后产生new con…

Oracle ASM (Automatic Storage Management)

[TOC](Oracle ASM (Automatic Storage Management)) Oracle ASM (Automatic Storage Management) 是 Oracle 的一个磁盘管理和文件系统服务&#xff0c;用于简化数据库文件的分布。 在使用 ASM 管理磁盘时&#xff0c;如果想要增加存储空间&#xff0c;您可以向现有的磁盘组添加…

IdentityServer密码长度超长会导致跳转到登录页

应用系统项目的安全要求越来越高&#xff0c;基本都是采取https等加密证书传输&#xff0c;无法使用https的&#xff0c;也是要求不能明文传输内容&#xff0c;因此做一些等保要求&#xff0c;密码需要加密后才能传输给服务端&#xff0c;所以前端会采取一些密码手段&#xff0…

block层:7. 请求下发

blk_dispatch 源码基于5.10 1. blk_mq_sched_dispatch_requests void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx) {// 队列struct request_queue *q hctx->queue;// 队列已停止或者被暂停if (unlikely(blk_mq_hctx_stopped(hctx) || blk_queue_quiesc…

【Android Framework系列】第12章 RecycleView相关原理及四级缓存策略分析

1 RecyclerView简介 RecyclerView是一款非常强大的widget&#xff0c;它可以帮助您灵活地显示列表数据。当我开始学习 RecyclerView的时候&#xff0c;我发现对于复杂的列表界面有很多资源可以参考&#xff0c;但是对于简单的列表展现就鲜有可参考的资源了。虽然RecyclerView的…