Java中Interface与C++中相关概念的点点理解
今天查Tuple这个词在编程中的意义时不经意间看到了C++中头文件声明这个说法,好长时间没写C++代码了,现在把C++的头文件放到Java的语境里不由自主地就想到了Java中Interface的概念.
表面上有点像.
1,以"实现"角度来看,在Java中一个接口得有实现类不然没有实际意义;C++中,一个头文件声明若没有对应的类,这个头文件声明也没有什么根儿.
2,以"调用"角度来看,在Java中的一个接口在别的类中调用时,一般得在调用类中把这个接口以import的方式引入那个实现类可以借助IoC的方式来new出来;在C++中想声明一个类的实例,我们也得把头文件声明以include的方式弄进来,而那个"具体"类好像不用....
另一方面又有些不像:
1,Java中的Interface里的声明的method都是抽象的,不能有任何实现.而C++中头文件声明里可以有一些method的简短实现.
2,Java中的Interface可以有任何个实现类,而C++中头文件声明根本没这方面的"潜力".
有了以上的像与不像的总结,再回过头来看看Java中Interface的提出.
以前一直认为Interface是把Java中的抽象类概念更往更深方向发挥了下,另一方面利用Interface可以很好地解决C++中的多重继承问题.可以说Java中的Interface概念在这一点(解耦合)发挥的那真叫是淋漓尽致,也达到了炉火纯清的程度.
今天这个无意中看了头文件声明这个东东后,觉得对Interface概念的理解可以再加进一点点人性化的味道.
刚才跟一朋友聊C++中的头文件声明时,他提到"主要是为了能更加方便的看清楚所有的函数功能,以及和其他头文件之间的关系
",这个特性是给人看的,也就是说,Coder/Designer通过头文件声明可能更直观地看到模块的功能点,不至于淹没在那些细之又细地实现上.
从这一点上来看,Interface概念表达的也更为直接.可不是嘛: 单单Interface(接口)这个词就可足以imply出所有功能点来.
写到这渐渐得出以下这么个formula:
Java中的Interface = (C++中头文件声明) + (C++中多重继承).
更形象一点来说就是给C++中的多重继承加一个头文件声明的"外衣"就成就了Java中Interface.
分享到:
相关推荐
AS-23-Yuanzhen-A-new-attack-interface-in-Java
首先,让我们理解“zope.interface”的核心概念。接口在Python中是一种抽象,它定义了对象必须遵循的契约。通过使用接口,开发者可以创建独立于具体实现的代码,增强了代码的灵活性和可维护性。例如,一个模块可以...
ipmi-second-gen-interface-spec-v2-rev1-1,因特尔提供的2020年最新资料,一共600多页的文件,绝对是一手最好的资料,看完这个,你就不用看国内摘抄的了,也不要看别的资料了
在Android应用开发中,JNI(Java Native Interface)是一种技术,允许Java代码和其他语言写的代码进行交互。JNI在Android系统中扮演着重要的角色,特别是在需要高效计算或者利用硬件特性时,如游戏开发、图像处理和...
标题中的“swig”是指Software Interface Generator,它是一个开源工具,用于将C和C++代码与多种编程语言(如Java和C#)互操作。在本案例中,我们将探讨如何利用SWIG在Java和C#中调用由C++编写的动态链接库(DLL)。VS...
资源名:ibaPDA-Interface-S7-TCP_UDP通讯配置实例源码 资源类型:程序源代码 源码说明: ibaPDA-Interface-S7-TCP_UDP通讯配置实例西门子plc配置实例 ibaPDA-Interface-S7-TCP_UDP通讯配置实例,西门子plc配置...
首先,我们来理解MIFARE Java Card API的核心概念。Java Card技术是Sun Microsystems(现已被Oracle收购)推出的一种用于开发智能卡应用的平台,它提供了安全的运行环境和高效的资源管理。Java Card API是一组预定义...
PHY Interface是指与计算机硬件中的各种接口相连接的物理层接口规范,确保不同设备间能够进行通信。 从描述中可以得知,该文件是针对PCI Express、SATA、USB 3.1、DisplayPort和Converged IO的物理接口架构的规范。...
本资源包含两个文档,一个是最新的Network Controller Sideband Interface(NC-SI)SpecificationV1.1.0官方发布版本,一个是2022年5月的最新版本Network Controller Sideband Interface(NC-SI)SpecificationV1.2WIP90...
C++的多重继承功能较广,Java的interface功能只是其中的一个子集。因为C++的虚拟函数可以有纯虚拟函数,也可有非纯虚拟函数,而Java只有抽象函数,所以功能模式少一种,自然能达到的效果较少一些。 但这并不代表Java...
在跨平台的软件开发中,有时我们需要在Java和C++之间进行交互,这通常是由于性能需求、使用已有的C++库或特定硬件接口的原因。Java Native Interface (JNI) 是Java平台提供的一种机制,允许Java代码和其他语言写的...
首先,我们要理解标题"实战-C++调用Java函数"所涉及的核心知识点。C++是一种强大的系统级编程语言,而Java则以其平台无关性和丰富的类库受到广泛应用。有时,我们可能需要利用C++的高效性能和Java的跨平台特性,这就...
MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。"mysql-connector-...
PIPE协议,PHY Interface For the PCI Express, SATA, USB 3.1, DisplayPort, and Converged I0 Architectures Version 5.2.1
zope.interface-4.7.1-cp35-cp35m-win32
官方离线安装包,亲测可用
zope.interface-5.4.0-cp37-cp37m-win32
Interface接口的定义和用法 马克-to-win Java视频的详细介绍
zope.interface-5.4.0-cp39-cp39-win_amd64
《Python中的Zope.interface库详解及其在Scrapy框架中的应用》 在Python的世界里,有许多优秀的库用于解决特定的问题,Zope.interface就是其中之一。这个库主要用于实现接口(Interface)的概念,它是一个强大的元...