golang接口

embedded/2024/10/18 10:15:04/

go里面的接口比较灵活,即接口没有直接归属权,不像java中使用interface直接将接口归属到某个类或者间接实现某一个接口,在go里面没有可以说明这个结构体实现了哪一个接口,它的能力就是对结构体添加成员方法,如果结构体中的方法恰好满足一个接口的所有声明的方法即就可以认为这个结构体实现了该接口,如果满足多个接口的方法就代表它实现了多个接口,但从代码上并没有体现它的实现的接口以及功能,而是从自身的能力上体现了具有的接口功能,符合条件就可被认为实现该接口,它的实例可以被接口的引用接收,这种实现的接口的目的不明确,担是实现的功能目标和是否实现相同接口不同名字取决于当前结构体的任务功能,而不是像java那样被限定实现接口,需要写好几个接口名才实现功能,java的好处就是比较明确该类有的能力,golang不明确有多少个接口的能力,只有使用的时候向符合的接口上转就具备这种能力,c++中没有定义接口二和抽象类的关键字,使用虚函数+虚函数表实现多态,虚函数相当于接口,子类实现接口的所有方法,我们来比较接口和抽象类的概念。

  1. 接口没有实现任何的方法,只是进行方法的声明,继承接口的类来实现这些方法。
  2. 接口没有定义任何变量,尽管Java的接口中可以有变量的定义,但是变量也是会被finalstatic修饰。
  3. 实现接口的类必须实现接口的所有方法。
  4. 抽象类可以有变量声明和方法实现/声明。此外,可以继承抽象类而不实现抽象方法。
  5. 抽象类不能实例化,而是由另一个类继承。实例化和抽象类将导致编译错误。

在了解如何定义抽象类和接口之前,让我们先了解在C++中什么是虚方法和纯虚方法。

虚方法:需要在派生类中进行重新定义,使用virtual关键字告诉编译器对该方法执行动态链接或后期绑定。

纯虚方法:是一种不需要定义而只需要声明的虚方法,它是通过在方法最后添加=0进行声明。

C++中的抽象类

  1. 最少具有一个纯虚函数。
  2. 可以有实现的方法。
  3. 可以进行变量定义。

C++中的接口

  1. 所有的函数必须被声明为纯虚函数。
  2. 没有变量的声明。

什么时候使用接口

当实现的功能彼此不相关时,创建的每个对象都是独立的,我们使用接口。

什么时候使用抽象类

当试图创建一个功能的多个版本时,当创建的对象之间存在某种关系时,我们使用抽象类。


http://www.ppmy.cn/embedded/8996.html

相关文章

OpenHarmony实战开发-如何使用AKI轻松实现跨语言调用。

介绍 针对JS与C/C跨语言访问场景,NAPI使用比较繁琐。而AKI提供了极简语法糖使用方式,一行代码完成JS与C/C的无障碍跨语言互调,使用方便。本示例将介绍使用AKI编写C跨线程调用JS函数场景。通过调用C全局函数,创建子线程来调用JS函…

如何使用cuda进行图像矫正

普通矫正 相机矫正我们经常会用到,如果没有gpu加速,实际上矫正会很吃力,我们先用普通的矫正 cv::Mat undistort(cv::Mat img, cv::Mat K, cv::Mat D, int w, int h, float scale 0.6){cv::Mat Knew K.clone();//Knew K.copy()if (scale !…

数据结构-上三角矩阵存储方式[0知识掌握]

目标:看完本文章你将会了解上三角矩阵的存储方式以及矩阵中数据的位置索引号如何求 难点:上三角矩阵的公式推导,上三角任意位置对应的存储位置。 一、准备知识 1.求和公式 前n项和:Sn n(a1an)/2 公差:d后项-前项…

web server apache tomcat11-08-JNDI Resources

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

君正主控应用案例:办公必备神器,长城黑白激光一体机

伴随着这些年素质教育水平的提高,学校老师们成功减负,家长身上的担子越来越重,同时移动互联网的发展,学校和家长的沟通方式也在发生着变化,现在很多老师喜欢给学生布置作业是电子版的形式,如果是试卷一类还…

37. UE5 RPG创建自定义的Ability Task

在前面的文章中,我们实现了一个火球术的一些基本功能,火球术技能的释放,在技能释放后,播放释放动画,在动画播放到需要释放火球术的位置时,将触发动画通知,在动画通知中触发标签事件,…

UE5下载与安装

官方网站:https://www.unrealengine.com/zh-CN 1、下载启动程序安装包。 登录官网后,点击首页右侧下载按钮下载Epic Games启动程序的安装包,如下图: 2、安装启动程序。 双击步骤1所下载安装软件,如下图:…

tomcat启动闪退问题

目录 一、Tomcat启动闪退问题 1.鼠标右键点击startup.bat,再点击编辑 2.往第一行添加以下内容 二、修改tomcat端口号 1.找到tomcat目录下的conf文件夹 2.右键点击server.xml,找到编辑 3.CtrlF 查找8080 后,修改端口号 4.再次运行star…