首页 > 其他分享 >抽象类和接口

抽象类和接口

时间:2023-03-31 16:59:13浏览次数:41  
标签:子类 abstract 接口 抽象 抽象类 方法

1、抽象类

  类的层次结构中,越往下继承的子类其属性和方法越来越具体。相反,越上层的祖先类其实现越抽象,甚至无法给出具体实现。例如,一个圆或矩形有面积,但祖先几何图形类的getArea()方法没法给出具体实现,这时可以定义为抽象方法。   Java中可以定义不含方法体的方法,方法的方法体由该类的子类根据自己的情况去实现,这样的方法称为抽象方法(abstract method),抽象方法的声明必须加上abstract关键字。包含抽象方法的类必须是抽象类(abstract class)。抽象类的声明必须加上abstract关键字。  抽象类和抽象方法的声明要加上abstract关键字。   抽象类的几点说明 (1)抽象方法不能包含在非抽象类中。如果抽象父类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象的。换句话说,抽象类扩展的非抽象子类中,必须实现所有的抽象方法。 (2)抽象方法是非静态的。(只有实例方法可以声明为抽象方法。) (3)不能使用new操作符来实例化抽象类。但仍然可以定义它的构造方法,这个构造方法被它子类的构造方法中调用。 (4)包含抽象方法的类必须是抽象的。但是,可以定义一个不包含抽象方法的抽象类。在这种情况下,不能使用new操作符创建该类的实例。这种类是用来定义新子类的父类的。 (5)抽象类的父类可以是具体类。即使子类的父类是具体的,这个子类也可以是抽象的。 (6)子类可以重写父类的方法并将它定义为abstract。这是很少见的,但是它在当父类的方法实现在子类中变得不合法时是很有用的。在这种情况下,子类必须被定义为abstract。 (7)不能使用new操作符从一个抽象类创建一个实例,但是抽象类可以被用作一种引用变量的数据类型。     抽象类的用意:抽象类只能用来被继承,或用来声明引用变量,不能实例化。   抽象方法的用意:模板方法,推迟到子类中实现的方法。   2、接口   接口是常量和抽象方法定义的集合。接口在许多方面都与抽象类很相似,但是它的目的是指明多个对象的共同行为。   语法 修饰符 interface 接口名 { 常量声明 抽象方法声明 }   接口体中的常量隐式地声明为 public static final 接口体中的方法隐式地声明为 public abstract

 

  接口中的方法通过“接口类型的引用变量.方法名”访问,但接口类型的引用变量必须指向实现了该接口的类的实例对象。   接口中的常量名通过“接口名.常量名”访问。    使用接口 可以在能够使用任何其他数据类型的地方使用接口。 接口类型属于引用类型,接口类型的变量可以存储:  空引用(null)  任何实现该接口的类的实例的引用 类实现接口的语法 修饰符 class 子类名 [extends 父类名] [implements 接口名列表 ] {   成员声明 }      除非类被声明为abstract,所有父接口中声明的成员方法必须被实现。一个类只能继承一个父类,但可以实现多个接口,多个接口以“,”分开。   如果接口声明中提供了extends子句那么该接口就继承了父接口的方法和常量。   任何实现该接口的类,必须实现该接口继承的其他接口。   3、是使用接口还是类?   抽象类和接口都是用来建模对象的共同特征。那么该如何确定在什么情况下使用接口,什么情况下使用类呢?一般来说,详细描述父子关系的强是关系(strong is-a relationship)应该用类建模。例如:职员是人,所以他们的关系是用类继承建模的。弱是关系(weak is-a relationship)也称为类属关系(is-kind-of relationship),它表明对象拥有某种属性。弱是关系可以用接口来建模。例如:所有的字符串都是可比较的,因此,String类实现Comparable接口。如果需要多重继承的话,您还可以使用接口来规避单继承的限制。在多重继承的情况下,你必须设计一个超类,而其它作为接口。

标签:子类,abstract,接口,抽象,抽象类,方法
From: https://www.cnblogs.com/qiqi-yi/p/17276709.html

相关文章

  • TSINGSEE基于国网B接口的设备注册流程与鉴权干货技术分享
    国网B接口是国家电网视频监控系统的内部接入协议,具体是指提供视频监控系统与属于该平台的前端系统之间的接口。近期我们也在研究该接口的接入相关研发事宜,今天来分享一些技术干货。1、接口描述注册属于数据接口,采用SIP标准协议,消息中URI的用户名应为下级平台的地址编码。注册过程应......
  • jmeter中测试websocket接口
    一、jmeter安装对应的插件1、Jmeter不自带WebSocket功能,需要先安装WebSocket的插件,选项中选择pluginsManager; 2、在availableplugins搜索WebSocket进行插件下载即可,我是将搜索到的2个插件都安装了,待Jmeter重启后插件就是安装成功。二、WebSocketSampler组件添加方式:1、......
  • 使用SpringBoot异步方法优化报销单查询接口,提高接口响应速度
    合理使用异步方法可以提高接口性能。异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中。SpringBoot支持异步方法调用。具体用法:在启动类添加@EnableAsync注解,声明开启异步方法在异步方法添加@Async注解,被@Async注解修改的方法由SpringBoot默认线程池(SimpleAsyncTas......
  • 接口自动化之测试数据动态生成并替换
    一、测试数据1.随机库random查看内置random方法,该方法自行学习,不再介绍。showprint([namefornameindir(random)ifcallable(getattr(random,name))])['Random','SystemRandom','_Sequence','_Set','_accumulate','_acos......
  • node express自动生成swagger(openApi)接口文档
    先看效果图:   实现步骤:1.安装所需的包npminstallswagger-jsdocswagger-ui-express2.新建文件swagger.js//swagger在线网站:https://editor.swagger.io/#constswaggerJSDoc=require('swagger-jsdoc')constswaggerUi=require('swagger-ui-express')......
  • 使用PHP调用OpenAI ChatGPT API接口
    本文介绍如何使用PHP调用OpenAI的文本完成模型ChatGPT的API接口,同时也包括图片生成模型DALL·E接口的调用。 一、SDK实现OpenAI的PHPSDK实现如下,其中ChatGPT使用的模型为gpt-3.5-turbo,如果已经有ChatGPTPlus,并申请到GPT-4的API权限,可以改为GPT-4的模型。classclass_openai......
  • 网页接口偶发性502的问题
    现象:网页接口一直偶发性502,概率大概20%左右 排查过程:架构是用户->WAF->lvs->NGINX->后端 1、尝试减少接口请求,依然会502,可知和接口服务能力无关。2、WAF侧,更换服务IP,依然不行,可知不是WAF某个节点网络有问题。3、Nginx侧,查看日志,并未发现502日志,可知502的请求没到nginx,怀......
  • C#: IDisposable接口
    在C#中,IDisposable接口用于释放非托管资源。非托管资源是指由操作系统或其他非托管代码创建的资源,如文件句柄、数据库连接、网络连接等。这些资源不受垃圾回收器的管理,因......
  • 自定义注解方式接口防刷实现
    原作前言本文为描述通过Interceptor以及Redis实现接口访问防刷Demo这里会通过逐步找问题,逐步去完善的形式展示原理通过ip地址+uri拼接用以作为访问者访问接口区......
  • 浅谈关于ERP上货需要使用的API接口及应用场景分析
    ERP(EnterpriseResourcePlanning)系统是一个非常重要的企业管理系统,它可以帮助企业实现全面的生产、销售、采购、库存和财务管理等方面的全面分析和控制。在这篇报告中,我......