接口(九)用接口和抽象类,与不用究竟究竟有什么区别或好处?

普通类,抽象类和接口之间的区别 一、普通类、抽象类和接口区别: 1. 普通类可以实例化,接口都不能被实例化(它没有构造方法),抽象类如果要实例化,抽象类必须指向实现所有抽象方法的子类对象(抽象类可以直接实例化,直接重写自己的抽象方法),接口必须指向实现所有所有接口方法的类对象。 2. 抽象类要被子类继承,接口要被子类实现。 3. 接口只能做方法的声明,抽象类可以做方法的声明,也可以做方法的实现。 4. 接口里定义的变量只... 阅读详情
接口和抽象类关系很紧密,它们都具有对成员的抽象。  
          对于一个抽象类,至少一个方法是抽象方法既可,这意味着它也可以具有具体方法[译注:Concrete   Method,这只是相对于抽象方法而言,面向对象中并没有这个概念]。  
          对于一个接口,所有的方法必须都是抽象的。  
          实现了一个接口的类必须为接口中的所有方法提供具体的实现,否则只能声明为抽象类。  
          在C#中,多重继承(Multiple   Inheritance)只能通过实现多个接口得到。抽象类只能单继承[注:C#中的单继承是指所有类作为基类的时候都只能是派生类声明中唯一的基类,而不仅仅是抽象类]。  
          接口定义的是一个契约,其中只能包含四种实体,即方法、属性、事件和索引器。因此接口不能包含常数(Constant)、域、操作符、构造器、析构器、静态构造器或类型[译注:指嵌套的类型]。  
          同时,一个接口还不能包含任何类型的静态成员。修饰符abstract、public、protected、internal、private、virtual、override都是不允许出现的,因为它们在这种环境中是没有意义的。  
          类中实现的接口成员必须具有公有的可访问性。
 
举个最 简单 例子吧.假如有个构建SQL语句的类.它有一个方法获得任意字符通配符.为此,我们写个抽象类:  
  public   abstract   class   DbFactoryBase  
  {  
          //默认实现,通配符  
          public   virtual   string   GetMultiLikeChar()  
          {  
                  return   "%";  
          }  
  }  
  //我们写MSSQL的实现  
  public   class   SqlSvrFactory:DbFactoryBase  
  {  
          //GetMultiLikeChar方法不需要重载  
  }  
  //我们写Jet的实现  
  public   class   JetFactory:DbFactoryBase  
  {  
          //重载,通配符  
          public   override   string   GetMultiLikeChar()  
          {  
                  return   "*";  
          }  
  }  
  好处是显而易见的,抽象类提供了默认实现,子类只在需要更改的时候才重载这个方法,我们这个类可以很容易扩展,比如增加对ORACLE的实现,调用这个抽象类的代码也不需要改变,但返回来的字符已经不同了.代码看上去也更简洁...等等.这只是冰山之一角.建议多看看模式之类的书.
避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个? 本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。 阅读详情

相关推荐

音频测试专题

麦克风与扬声器单体测试指标及整机性能测试概述 麦克风测试指标包括频率响应、灵敏度、指向性等10项关键参数,用于评估声音捕捉和信号转换性能。扬声器测试包含频率响应、灵敏度等12项指标,涉及声学特性和物理参数。整机性能测试覆盖安静、嘈杂和正常三种环境,重点检测麦克风底噪、清晰度、扬声器音量及通话质量等12项功能指标。两类单体测试与整机测试共同构成完整的音频设备质量评估体系,确保产品在不同场景下的性能表现。

weixin_52640906的博客 1316

使用接口的好处

今天突然想起来刚接触java时纠结的一个问题。 当一个项目小到只有几个功能而且功能互相不重叠的时候,那么还有没有使用接口的必要。比方说我只需要实现一个输出hello world的功能,而且后期没有任何扩展,有没有必要创建一个helloService接口和一个实现helloServiceImpl。个人认为是没有必要的,当然这个例子功能过于简单。但是现实中的项目绝对没有这么简单,是必定要用接口的。下面...

xcylive520的专栏 4401

ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析

简介 ROST CM 6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。 社会网络和语义网络分析(S) 数据 注意,保存时编码要为ANSI 所以这里需要转换一下 准备自定义表与停词表 例如 同时,点击快速分析后,将会弹出网络图 对网络图进行设置 对布局进行设置 对节点、边进行设置 最终效果图 修改 情感分析

积一时之步,臻千里之遥程 9万+

接口的好处

接口的好处 1、什么是接口 接口比抽象类抽象的更加彻底,接口定义了一批类所需要遵守的规范。接口是不用关心这些类中方法的实现细节的。 接口做到了规范与实现的分离,是一种松耦合设计。软件系统的各个模块之间也应该采用这种面向接口的耦合,从而尽量降低各个米快直接的耦合,为系统提供更好的可扩展性和可维护性。 2、定义接口 // [修饰符] interface [接口名] extends 父级接口1,父级接口2,注,只能继承接口 // 如果省略public访问控制符,则默认采用包权限访问控制符 pub

Ruyi_squad的博客 1706

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 387

真双口RAM---Quartus与Vivado开发环境区别对比

2、写和写冲突:表示两个端口写使能同时有效且写地址相同,此时需要关断一个写,把两个写端口都需要更新的值处理到一个写端口上面,任何的DP RAM 都不支持写和写冲突。以上述直方图统计使用为例,博主在仿真过程中发现,vivado真双口RAM--B端口读写延迟2个clk;1、读和写冲突:如果读和写同时有效,且读和写是同一个地址时,发生RAM读写冲突,此时会把最新的写数据直接赋给读数据,称为写穿通到读。

weixin_54470733的博客 3582

为什么要用接口?接口到底有什么好处?

接口本身并不提供实现,只是提供一个规范。

JiaWJW的博客 1138

48V电动车电池包拆解:硬核入门BMS硬件设计与故障排查

BMS(电池管理系统)是锂电应用的核心安全与性能保障模块,其本质是融合电化学、模拟电路、嵌入式控制与热管理的交叉系统。理解BMS不能止步于SOC算法或通信协议,而需回归硬件本体——从电压采样精度、MOSFET驱动时序、被动均衡散热设计到NTC热耦合布局,每一处物理实现都直接决定系统可靠性。48V平台因兼具安全性(<60V ELV)、复杂度(13–14串)与产业普及性,成为BMS工程实践的理想标本。本文聚焦真实电池包中的PCB级设计缺陷识别、关键参数现场验证(如±5mV采样误差、5mΩ导通内阻)、UART协议

weixin_29191081的博客 232

接口对接优势--九五小庞

2.完整性:全面,详细,覆盖API的所有功能和用法。包括:质控类,检验业务类,互认类,互联互通类。3.实时性:接口采用RESTful方式,使得数据交互更加简单高效。4.安全性:接口调用携带token认证,交互数据加密上传。1.易用性:简单明了,易于理解和使用;

qq_37241964的博客 325

12、多旋翼飞行器动力学建模与实验分析

本文探讨了多旋翼飞行器的动力学建模过程,包括使用四元数的优势、刚体运动学与动力学模型的构建,以及螺旋桨推力和扭矩对飞行性能的影响。文章还通过基础实验和分析实验研究了质量、转动惯量和螺旋桨参数对飞行状态和控制响应的影响,并结合理论分析与仿真结果总结了多旋翼飞行器的动力学特性。最后,对未来研究方向进行了展望,以提升多旋翼飞行器的性能和可靠性。

Python的专栏 208

Android Shadow插件化框架分析与集成(一)

到此为止,本篇文章先介绍到这里,本篇文章主要介绍了:从源码的角度去集成shadow框架,从下载源码开始,到集成到自己的项目中,其中插件项目我是新建的demo应用,宿主应用是之前搭的一个MVP框架。文章中一步一步详细的介绍了宿主该如何集成,并提供了源码;介绍了插件该如何集成,同时也提供了源码。文章中还介绍了gradle的版本与AGP版本使用不当造成的问题,以及shadow源码的gradle版本与APG版本的配置,及和宿主插件应用gradle版本与AGP版本的关系。

superzhang6666的博客 1235

抽象类和接口的区别

抽象类和接口一、抽象类二、接口三、抽象类和接口区别 一、抽象类 1、什么是抽象类? 答:类和类之间具有共同特征,将这些共同特征提取出来,形成抽象类。 2、类可以实例化对象吗? 答:由于类本身不存在,因此抽象类无法创建对象。使用抽象类时,写代码可以使用多态(父类型引用指向子类型对象),这里即抽象类作为父类。 3、抽象类中可以包含什么? ① 一般方法、静态方法和抽象方法,且抽象方法必须在抽象类中 ② 静态变量和成员变量 abstract class AbstractTest01{ int a;

devilzcl的博客 1万+

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2175

Java 抽象类和接口的区别

一、语法层面上的区别 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract (隐式声明)方法; 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final(隐式声明)类型的(必须在声明时赋值); 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; 一个类只能继承一个抽象类,而一个类却可以实现多个接口。 二、设计层面上的区别 a.抽象类是对一种事务的抽象,是对整个类进行抽象,包括属性,...

weixin_66813230的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

接口与抽象类的区别

a、抽象类不能被实例化只能被继承; b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法; c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public; d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类; e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。 接口:Java中接口使用interface关键字修饰,特点为: a、接口可以包含变量、方法;变量被隐士指定为public st.

DavidLiu的博客 3万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

抽象类和接口的区别及使用场景

抽象类和接口的区别及使用场景 1.1 抽象类 1.2 接口 1.3 抽象类和接口的区别 1.3.1 语法层面上的区别 1.3.2 设计层面上的区别 1.4 什么时候使用抽象类和接口 抽象类和接口的区别及使用场景 1.1 抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract voi...

amoscxy的博客 7021

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

接口和抽象类有什么区别

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它. 所以,在高级

冯立彬的博客 27万+

接口和抽象类的区别

这是一个非常经典的Java基础题,再次整理出来,除了巩固之用外也是对一些新特性的总结(随着Java的不断发展,Jdk8 Jdk9的发布,接口和抽象类也发生了一些改变)。 根据“国际上”的标准回答(就业季看过面经的应该有过了解) 接口和抽象类是Java的两个基础机制。接口是对行为的抽象,他是抽象方法的集合。接口不用被实例化,不能包含非常量成员。所有成员默认被public stat...

Yanliang 2万+

【Java学习】抽象类实现接口的好处和意义

抽象类和接口是两个非常相似的类型,许多人认为这俩可以互相换着用,他们既有相似的地方,也有不同的地方,本文将带你梳理这些误区,而且用实际代码告诉你抽象类实现接口会多么的有用。 先来熟悉接口与抽象类的区别: 语法层面的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法; 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public s...

爱科比的博客 4004

TypeScript中,抽象类和接口的区别

现在,对于TypeScript的使用越来越多,而要用TypeScript进行开发,不仅是语法上的不同,更是思想上的不同。 今天,就来分享下TypeScript中,抽象类与接口的特性及其区别;这是JavaScript中没有提及的概念。所以,更要对其了解,才能更好的在项目中应用它们。 目录: 1.什么是抽象类? 1.1 抽象类的特性! 2.什么是接口? 2.1 接口的特性! 3.抽象类和接口的区别? 1. 什么是抽象类? 抽象类,顾名思义,即类的抽象,从面向对象的角度来...

bug收集 1803

java接口和抽象类的区别,什么时候该用接口什么时候该用抽象类

很多人在面试过程中都会被问到这个问题,语法上的区别大家都知道,但是如果面试时你只说语法上的区别估计面试官会在心里扣你两分 下面说说这两者在设计方面的区别: 接口大家比较熟悉一点,因为现在的MVC架构业务层规范就是先写接口再写实现类,那大家有没有想过,用抽象类代替这些接口,是否可行呢?从语法上当然是可行的,但是不会这样做,为什么呢?大材小用,理念不同..接着往下看 举个例子,领导说了,需要有个订单报...

wb_snail的博客 1万+

C# 接口和抽象类的区别

一、抽象类 抽象类是仅供派生的类,无法实例化抽象类,只能实例化它派生的类。 定义抽象类和抽象成员时,要为其添加abstract修饰符。 不可实例化只是抽象类的一个次要的特征,其主要特征是它包含抽象成员。 抽象成员不能声明为私有,否则,派生类无法找到它们。 二、接口 1.和抽象类不同,接口不包含任何实现,而且,接口能把提供的服务和实现细节完全隔离开。 2.关键特点:既不包含实现,也不包含数据。...

mozhi 1976
上一篇: 接口(八)事件与接口编程
下一篇: 接口(十)初始化一个接口实例
阿达King哥
博客等级 码龄23年 387粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值