抽象类与抽象方法

文章目录

    • 抽象类
      • 抽象类的特点
    • 抽象方法
      • 抽象方法的特点
    • 模板设计模式
      • 模板设计模式能解决的问题
      • 示例

#抽象类与抽象方法

抽象类

用abstract关键字来修饰一个类时,这个类就叫抽象类。

public abstract 类名{...
}

抽象类的特点

1)抽象类不能被实例化。

2)抽象类不一定要包含抽象方法,也可以没有抽象方法。

3)一旦包含了抽象方法,则该类必须为抽象类。

4)抽象类可以有任意成员(抽象类的本质还是类),比如:非抽象方法、构造器,静态属性等。

5)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为抽象类。

抽象方法

用abstract来修饰一个方法时,这个方法就是抽象方法。

public abstract void 方法名()

抽象方法的特点

1)抽象方法必须定义在抽象类内部。

2)抽象方法没有方法体,需要继承该类的子类去重写方法实现。

3)抽象方法不能用private、final、static来修饰,因为这些关键字都是和重写相违背的。

模板设计模式

抽象类体现的就是一种模板模式的的设计,抽象类作为多个子类的通用模板,子类在抽象类的继承上进行扩展、改造,但子类总体上会保留抽象类的行为方式。

模板设计模式能解决的问题

1)当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。

2)编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板设计模式。

示例

需求:有多个类,完成不同的任务job,要求统计得到完成任务的时间。

抽象类:

abstract public class Template { 	//抽象类-模板设计模式public abstract void job();	//抽象方法public void calculateTime() {	//实现方法,调用 job 方法//得到开始的时间long start = System.currentTimeMillis();job(); 	//动态绑定机制//得的结束的时间long end = System.currentTimeMillis();System.out.println("任务执行时间 " + (end - start));}
}

子类重写job:

public class AA extends Template {@Overridepublic void job() { //实现 Template 的抽象方法 joblong num = 0;for (long i = 1; i <= 800000; i++) {num += i;}}
}

测试:

public class Test1 {public static void main(String[] args) {AA aa = new AA();aa.calculateTime();}
}

成功得到结果:

请添加图片描述

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

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

相关文章

新闻网站封锁AI爬虫 AI与新闻媒体博弈继续

随着ChatGPT等新兴AI模型的兴起&#xff0c;它们所依赖的网络爬虫正面临来自全球主流新闻网站的大规模封锁。Richard Fletcher博士团队对十个国家主流新闻网站的统计发现&#xff0c;到2023年底&#xff0c;48%的网站屏蔽了OpenAI的爬虫&#xff0c;24%屏蔽了Google的爬虫。那么…

批量自动加好友神器!微信快速扩友秘籍!

对于一些个人或者企业来说&#xff0c;传统的人工添加好友方式往往会出现效率低下&#xff0c;费时费力的问题。那么&#xff0c;有没有一种快速、便捷、安全的方式来解决这个问题呢&#xff1f;答案当然是肯定的&#xff0c;那就是通过使用微信管理系统来解决这一问题。 在微…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在&#xff0c;避免从数据库中查询数据是否存在&#xff0c;减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数&#xff0c;可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时&#xff0c;布隆过滤器会…

收银系统源码-智慧新零售,ERP进销存功能详解

智慧新零售是一套线下线上一体化的收银系统&#xff0c;不仅给门店线下提供了多样化的收款方式&#xff0c;还提供了和线下深度打通的线上小程序商城。有线下又有线上自然需要一套完整的进销存模块能高效的管理商品。 智慧新零售进销存功能涵盖了商品的采购、销售、调拨、盘点…

(学习日记)2024.03.01:UCOSIII第三节

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

请查收:2024年腾讯云服务器优惠价格表_租用配置报价

一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核2G、2核4G、4核8G、8核16G、4核16G、8核32G、16核32G、16核64等配置可选&#xff0c;公网带宽1M、3M、5M、12M、18M、22M、28M…

Doccano的标注结果转换为BIO格式

简介 实现了Doccano导出格式到BIO命名实体识别格式的转换 演示 Doccano的导出格式: {"id":161,"text":"“十四五”时期是我省全面建成小康社会之后&#xff0c;乘势而上开启全面建设社会主义现代化国家新征程的第一个五年&#xff0c;也是谱写新时代…

智慧旅游+数字化景区整体解决方案:文件全文83页,附下载

关键词&#xff1a;智慧景区建设&#xff0c;智慧旅游一体化平台&#xff0c;数字化景区建设&#xff0c;智慧旅游建设&#xff0c;智慧景区解决方案&#xff0c;智慧文旅解决方案&#xff0c;智慧旅游解决方案 一、景区智慧旅游建设需求与背景分析 1、技术发展背景 随着信息…

【面试题解析】每日一套面经(Java),抓住金三银四。

1、SpringCloud基本组件 Spring Cloud Alibaba 是 Spring Cloud 的一个子项目&#xff0c;它将阿里巴巴开源的微服务组件与 Spring Cloud 生态系统进行了整合。Spring Cloud Alibaba 提供了一系列适用于微服务架构的阿里巴巴组件&#xff0c;主要包括以下几个基本组件&#xf…

SVPWM

SVPWM SVPWMSVPWM原理产品比较特点来源 SVPWM SVPWM的主要思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准&#xff0c;以三相逆变器不同开关模式作适当的切换&#xff0c;从而形成PWM波&#xff0c;以所形成的实际磁链矢量来追踪其准确磁链圆。传统…

CAPL组装IPv4分片包的三种思路(2)

2、使用CAPL的函数自动生成一条完整的ICMPv4 Echo Request报文,然后把数据手动放入两个分片报文中 首先生成一条完整的icmp报文: ethernetPacket ppkt1;//icmpv4 echo requestbyte data[1] = {10};//icmpv4 echo request datappkt1.icmpv4.echo…

179基于matlab的2D-VMD处理图像

基于matlab的2D-VMD处理图像&#xff0c;将图片进行VMD分解&#xff0c;得到K个子模态图&#xff0c;将每个模态图进行重构&#xff0c;得到近似的原图。可以利用这点进行图像去噪。程序已调通&#xff0c;可直接运行。 179 2D-VMD 图像分解重构 图像处理 (xiaohongshu.com)