`

Interface进化历程 --Java中Interface与C++中相关概念的点点理解

阅读更多

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.

分享到:
评论
1 楼 neyshule 2013-09-22  
头文件为什么不能有多个实现??当然可以写多个cpp文件都引用并实现这个头然后linking的时候用不用的symbol。

相关推荐

    Java ENhanced Native Interface-开源

    JNI在Java的发展历程中扮演了关键角色,它弥补了Java纯解释执行的性能短板,使得Java能够调用本地(如C、C++)库,实现了跨平台的高性能计算。 `Java ENhanced Native Interface - 开源`这个标题暗示了我们讨论的是...

    Java本地接口(JNI)编程指南和规范.pdf

    在JNI的进化过程中,相关开发指南和规范的更新也在不断进行,以保证Java开发者可以更好地利用本地代码,同时避免出现常见的陷阱和错误。开发者在使用JNI时,必须严格遵循规范,才能确保本地代码与Java代码之间的正确...

    SQLite入门与分析

    - **发展历程与特点**:SQLite由D. Richard Hipp创建,其目标是简化应用程序中数据管理的工作流程。相较于传统的数据库管理系统,SQLite具有以下显著特点: - **零配置(Zero-Configuration)**:无需安装、配置或...

    高通平台camera框架分析

    - **API 2.0 及以上**:架构发生了显著变化,Client端的角色由Java层的`CameraDevice`承担,通过AIDL(Android Interface Definition Language)机制实现跨进程调用,提高了系统的响应速度和稳定性。 无论是API 1.0...

    C#历史版本

    ### C#历史版本及相关知识点详解 #### 基本概述 C#(发音为 C Sharp)是由微软开发的一种面向对象的编程语言,旨在为.NET Framework提供支持。它结合了C/C++的强大特性和Visual Basic的易用性,是首个真正意义上的...

    C#编程介绍

    C#的发展历程也伴随着.NET Framework的进化,从最初的C#1.0版本至今,已经经历了多个版本的迭代,不断添加新特性和优化。 2. 设计目标 C#的设计旨在提供强大的类型检查、内存管理(通过垃圾收集)以及对分布式组件...

    Matlab简介Matlab简介Matlab简介

    同时,它支持多种编程语言的集成,包括C、C++、Fortran、Java等,能够调用或被调用,极大拓展了其应用场景。 2. **算法开发与数据可视化**:MATLAB提供了一套完整的工具,支持算法的快速开发和优化,同时拥有强大的...

Global site tag (gtag.js) - Google Analytics