首页 > 其他分享 >1.接口和抽象类的区别

1.接口和抽象类的区别

时间:2024-01-27 10:22:59浏览次数:24  
标签:变量 区别 实现 接口 抽象类 方法 定义

接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。

具体而言,接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的。而抽象类是可以有私有方法或私有变量的,如果一个类中包含抽象方法,那么这个类就是抽象类。

在java语言中,可以通过把类或者类中的某些方法声明为abstract来表示一个类是抽象类。接口就是指一个方法的集合,接口中所有的方法都没有方法体,在java语言中,接口是通过关键字inteface来实现的。

接口与抽象类的相同点:
1.都不能被实例化;
2.接口的实现类或抽象类的子类,都只有实现了接口或抽象类中的方法后才能被实现;

接口与抽象类的不同点:
1.接口只有定义,不能有方法的实现,抽象类可以有定义与实现,即其方法可以在抽象类中被实现;
2.实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。因此使用接口可以达到多继承的目的。
3.接口强调特定功能的视线,设计理念为"like-a"关系,抽象类强调所属关系,设计理念为:"is-a"关系;
4.接口中定义的成员变量默认为public static final,只能有静态的不能被修改的数据成员,而且必须给其赋初值,其所有的成员方法都是public,abstract,而且只能被这两个关键字修饰。
而抽象类可以有自己的数据成员变量,也可以有非抽象的成员方法,而且,抽象类中的成员变量默认为default,当然也可以定义为private,protected和public,这些成员变量可以在子类中重新被定义,也可以被重新赋值,抽象类中的抽象方法,不能用private,static,synchronized和native等访问修饰符修饰,同时必须以分号结尾,并且不带花括号。所以当功能需要积累时,使用抽象类;不需要积累时,使用接口;
5.接口运用于实现比较常用的功能,便于日后维护和添加删除方法;抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行维护。

标签:变量,区别,实现,接口,抽象类,方法,定义
From: https://www.cnblogs.com/yige888/p/17991152

相关文章

  • Java商城单体和微服务架构有什么区别
    微服务架构概述BizSpring移动全端国际化电商平台,是建立在SpringCloud基础上的微服务应用,服务化是系统达到一定规模以后的必然选择,主流的互联网公司基本都在迁移到服务化架构。我们的微服务化架构给客户带来更多便捷,每个开发团队及各人更加专注于自身业务的开发,每个服务独立......
  • Salesforce 通过 Flow 调用外部接口
    1接口设置1.1被调用的接口调用外部接口需要先搭建好可以外网访问的WebAPI,我使用的是.NET6搭建的WebAPI,并开启了Swagger(用于将接口导入到Salesforce).1.2Salesforce接口鉴权设置在设置->安全性->远程站点设置里添加接口的地址,有端口就需要带上端口号.......
  • HTTP和HTTPS的区别及其重要性
    先介绍一下:在互联网应用中,HTTP和HTTPS是两种常见的协议.他们在数据传输过程中有着显著的区别,尤其是在安全性方面.本文将介绍HTTP和HTTPS的区别,并强调HTTPS的重要性.以下是文章的主要内容:1.HTTP(HyperTextTransferProtocol):·HTTP是一种基于文本的协议,用于在Web浏览器......
  • 根据后端接口获取文件流下载Excel文件 分别通过GET和POST请求实现(★★★
    POST携带参数请求文件流并保存为Excel文件//payload携带的对象参数functiondownloadExcel(payload){letxhr=newXMLHttpRequest();xhr.open('POST','background/baseInfo/export',true);xhr.setRequestHeader('Content-Type','application/j......
  • modbus和tcp有什么区别?
    Modbus和TCP都是网络通信协议,但它们有着不同的特点和用途。Modbus是一种串行通信协议,最初是为了在PLC(可编程逻辑控制器)之间进行通信而设计的。它采用RS-485或RS-232等串行通信接口,数据传输速率通常较慢,但距离较短。Modbus协议使得控制器之间以及控制器与网络和其它设备之间能够进行......
  • iOS 中 深拷贝和浅拷贝的区别
    在iOS开发中,深拷贝和浅拷贝是两种不同的对象复制方式,它们在处理NSArray、NSMutableArray以及其他集合类型时尤为重要。浅拷贝(ShallowCopy)浅拷贝仅复制对象的指针,而不复制对象本身。如果你对一个对象进行浅拷贝,新对象和原对象将指向相同的内存地址。这意味着如果你修改了其中一......
  • 【JAVA基础】String、StringBuilder和StringBuffer的区别——巨详细
    先给答案String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。源码先看看jdk1.8中关于String、StringBuilder和StringBuffer部分的源码,我们看某个类或者某个属性是否不可变首先要看修饰类的关键字是什么,final表示不可......
  • 记一次生产接口慢的问题
    8月8号早上9点钟,业务反映页面加载不出来。查看数据服务器内存、cpu都正常查看应用服务器内存、cpu正常慢sql排查也未发现问题排查代码发现数据库连接池配置有点小再看了访问情况,发现当天的访问量多了不少。所以确定了问题就是这个配置问题,决定晚上发布来把配置改大。下午......
  • modbus和tcp有什么区别?
    Modbus和TCP都是网络通信协议,但它们有着不同的特点和用途。Modbus是一种串行通信协议,最初是为了在PLC(可编程逻辑控制器)之间进行通信而设计的。它采用RS-485或RS-232等串行通信接口,数据传输速率通常较慢,但距离较短。Modbus协议使得控制器之间以及控制器与网络和其它设备之间能够进......
  • linux服务器,启动服务jar包后,tail查看日志会卡主几分钟后,日志才加载出来,且访问接口很容
    首先:先排除服务器资源不足问题,看程序启动分配内存是否充足等问题原因:DNS配置异常导致的问题,程序运行时会去跑这些域名解析解决方法:/etc/resolv.conf中namespace配置注释,配置注释后,不用运行其他命令,会立即生效,重启服务,可以看到日志会立即返回,且调接口会快速返回,不容易超时......